JavaScript-hash数组for in 函数
什么是数组:内存中,连续存储多个数据的存储空间,再起一个名字为什么;
为什么:现实存储多个相关数据,都是集中存储,共同一个名字 程序=数据结构+算法
好的数据结构可以极大的提高程序的执行效率
何时使用数组,今后只要连续存储多个相关的数据都要用数组
如何使用数组: 创建数组:3种
一.创建空数组
1.创建空数组:var arr=[];
2.用new: var arr=new Array(); 二.创建数组同时,初始化数组的数据:
1.数组直接量:var arr=[值1,2,3,4,5,6,....]
2.用new:var arr=new Array(值1,2,3,4,5,6,.....) 三.创建n个空房间 数组的length属性:
标识了数组中理论上的元素个数
任何情况下:length永远是最大下标+1
固定套路
缩容:arr.length--
1.最后一个元素:arr[arr.length-1]
2.倒数第n个元素:arr[arr.length-n]
3.追加新元素:arr[arr.length]=新值;
特殊情况:js中的数组:3个不限制
1.不限制元素的类型
2.不限制下标越界
获取元素值:
下标越界:不报错,返回undefined
3.不限制元素的个数
设置元素值:
1.最后一个元素:arr[arr.length-1]
2.倒数第n个元素:arr[arr.length-n]
3.追加新元素:arr[arr.length]=新值;
下标越界:
自动在指定值 如果找不到,返回-1 数组是引用类型的对象 垃圾回收
定期回收不再被任何变量引用的对象。释放内存。
1.垃圾回收器:
伴随主程序,并运行的一个小程序
定期回收内存中的不在被任何变量引用的对象
2.引用计数器:
每个对象上,标记正在引用对象的变量个数的一个属性
每多一个变量引用对象,计数器就+1
如果一个变量通过赋值为null释放对对象的引用,则计数器-1
直到计数器为0,表示不再有任何变量引用该对象,则该对象被回收/释放
建议:如果使用完较大的对象,都要主动赋值为null。 访问元素:
lxr["name"]
强调关联数组的length失效
遍历不能用for循坏
用for in循环
其中in,表示依次取出数组中每个下标for(var key in hash){
//key得到是每个元素的下标名称
hash[key]当前元素值
} 关联数组/hash数组原理:
hash算法:接收一个字符串,并计算出一个尽量不重复的序号
相同的字符串,计算出的号总是一样的
不同的字符串,计算出的号绝大多数不重复 存入数据:
hash算法接收一个字符串的下标明,计算出一个不重复的序号。将数据存储在序号对应的数组位置上
获取数据:
将下标名称交个hash算法,算出和存入时完全相同的序号,直接去序号位置查找元素
优点,查找极快
和数组中元素个数,以及元素在数组中的位置无关
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
// var lxr=[];
// lxr["name"]="林心如";
// lxr["math"]=83;
// lxr["chs"]=93;
// lxr["eng"]=80;
// console.log(lxr);
// console.log(lxr["math"]);
// //遍历
// for(var key in lxr){
// console.log(key+":"+lxr[key]);
// }
///*****************************************/
var arr=['a','b','c','b','a'];
function uniqual(arr){
//遍历arr中每个元素,同时声明空数组uarr
for (var i= 0,uarr=[]; i<arr.length;i++){
//遍历uarr中每个元素
for(var j=0;j<uarr.length;j++){
//如果uarr中当前元素等于arr中当前元素
if(uarr[j]==arr[i]){
break;//就退出循环 //遍历结束
}
}
//如果j等于uarr的length
if(j==uarr.length){
uarr[j]=arr[i];//将arr中当前元素加入uarr中
}//遍历结束
}
//返回uarr
return uarr;
}
var uarr=uniqual(arr);
console.log(String(uarr)); //abc
</script>
</body>
</html>
JavaScript-hash数组for in 函数的更多相关文章
- [转] 有趣的JavaScript原生数组函数
在JavaScript中,可以通过两种方式创建数组,Array构造函数和 [] 便捷方式, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typeof操作符返回‘obj ...
- JavaScript原生数组函数
有趣的JavaScript原生数组函数 在JavaScript中,可以通过两种方式创建数组,构造函数和数组直接量, 其中后者为首选方法.数组对象继承自Object.prototype,对数组执行typ ...
- 有趣的JavaScript原生数组函数
本文由 伯乐在线 - yanhaijing 翻译.未经许可,禁止转载!英文出处:flippinawesome.欢迎加入翻译小组. 在JavaScript中,可以通过两种方式创建数组,Array构造函数 ...
- JavaScript的作用;JS常见的三种对话框;==和===的区别;函数内部参数数组arguments在函数内部打印实参;JS的误区:没有块级作用域
JS:客户端(浏览器)脚本语言 弱类型 基于原型 事件驱动 不需要编译(直接运行) JS的作用:表单验证,减轻服务端的压力 添加页面动画效果 动态更改页面内容 Ajax网络请求 (一)常见的对 ...
- JavaScript中的Function(函数)对象
1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...
- JavaScript Array数组方法详解
Array类型是ECMAScript中最常用的引用类型.ECMAScript中的数据与其它大多数语言中的数组有着相当大的区别.虽然ECMAScript中的数据与其它语言中的数组一样都是数据的有序列表, ...
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
- javascript常用数组算法总结
1.数组去重 方法1: JavaScript //利用数组的indexOf方法 function unique (arr) { var result = []; for (var i = 0; i & ...
- javascript中数组的22种方法
× 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法 ...
随机推荐
- 分析Tornado的协程实现
转自:http://www.binss.me/blog/analyse-the-implement-of-coroutine-in-tornado/ 什么是协程 以下是Wiki的定义: Corouti ...
- CentOS6.4 安装 erlang
wget http://www.erlang.org/download/otp_src_17.0.tar.gz -P /usr/local/src/ wget http://www.erlang.or ...
- No.5__C#
One month 今天是个有纪念意义的日子,2015-4-23.今天是实习的第一个月,算是成就达成吧.虽然,除去了周末六日和清明什么的,只剩下20多天了,但是,还是好开心 啊,毕竟是第一次参加工作, ...
- VR全景智慧城市-720全景项目行业应用
VR虚拟现实.VR全景概念已成为科技发展热议的焦点.在这样的市场大环境下,全景智慧城市做为一家对大众创新万众创业和用户体验为理念的VR全景城市化信息搜素平台平地而生成为的VR行业领跑者,致力VR全景V ...
- Flex布局总结
2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能.lex布局将成为未来布局 ...
- Aspose.Words 的使用 Aspose.Total_for_.NET
最近在做有个业务需要Word做好模版,数据库取出业务数据在写入Word模版里面,然后生成PDF给客户端的业务人员 之前找了半天,没有找到用微软的Microsoft.Office.Interop.Wor ...
- django1.7取消syncdb后不能创建model相应表的问题
一.在运行一个django程序时,无法创建自定义model相应的表. 我检查seetings.py文件,发现自定义的app,blog已经写到INSTALLED_APPS中, INSTALLED_APP ...
- Oracle 查询系统所有用户信息
1.查看所有用户:select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统 ...
- 【转】java的socket编程
转自:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台 ...
- 登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用
登录失败.该登录名来自不受信任的域,不能与 Windows 身份验证一起使用 使用sever sql 远程连接数据库的时候遇到了这个问题,我用的是ADO.NET 实体数据模型,有web.config ...