逆战班!数组与数组的遍历

### 数组:

什么是数组:内存中连续存储多个数据的存储空间,再起一个名字
其实就是多个变量的集合
何时使用数组:只要一个变量能够存储多个相关的数据,都要使用数组集中存储
如何使用数组:
创建:
1、数组直接量:
var arr=[];//空数组
var arr=[1,2,3,4,5,6];//初始化元素
2、构造函数方式:
var arr=new Array();//空数组
var arr=new Array("金花婆婆","紫衫龙王","灭绝师太");//初始化元素
特殊:
new Array(num);//创建一个长度为num的空数组

访问:数组名[下标] -- 元素
每个数组的元素的用法和普通变量完全一样
特殊:读取元素:下标越界:undefined
修改元素:下标越界:自动在指定位置添加新元素
结果:下标不连续的情况 -- 稀疏数组(不要出现稀疏数组)

不限制:
1、不限制元素的个数
2、不限制元素的类型
3、不限制下标越界,但是我们尽量不要下标越界

唯一的属性:arr.length,记录数组的元素个数!
固定套路:
1、最后一个位置添加元素:arr[arr.length]="新元素";
2、删除最后n个元素:arr.length-=n;
3、可以获取最后一个元素:arr[arr.length-1]

循环遍历数组:
for(var i=0;i<数组名.length;i++){
数组名[i];
}

索引数组:下标都是数字组成的

关联数组:hash数组
什么是:可以自定义下标名称的数组
为什么:索引数组的下标无具体意义,不便于查找
何时使用:只要需要自定义下标时
-- 便于查找!
创建:2步
1、创建空数组
2、向空数组中添加指定下标名称的元素
var zm=[];
zm["name"]="张敏";
zm["chs"]=93;
zm["math"]=78;
zm["eng"]=100;
访问:数组名["自定义下标"]。
强调:hash数组的length失效了!永远为0!

遍历关联数组:for in循环专门用于遍历hash/索引数组的
for(var i in 数组名){
i//每一个的下标
数组名[i];
}
建议:hash数组用for in遍历,索引数组还是使用for遍历

***hash数组的原理:
hash算法:将字符串,计算出一个尽量不重复的数字
字符串相同的,那么得到的数字一定也是相同的
添加元素:将自定义下标名称交给hash算法,得到一个尽量不重复的地址序号
查找元素:将指定的下标名称交给hash算法,得到一个和存储是一样的地址序号
通过地址序号就可以找到保存在里面的那个值
查找速度一定很快。

*****js中的一切东西都是对象,而且一切对象的底层都是hash数组

posted @ 2020-04-06 23:42  想当画师的前端码农  阅读(75)  评论(0编辑  收藏  举报