1. 关联数组:
索引数组: 下标为数字的数组
问题: 每个元素,只有值,没有有意义的名称
解决: 关联数组: 可自定义下标名称的数组
如何:
创建: 2步: 1. 先创建空数组: var scores=[]
2. 在空数组中添加新元素,使用自定义的下标名
scores[“MATH”]=81;
访问元素: 用自定义的下标名称:
scores[“MATH”] 用法和普通变量完全一样
关联数组原理:
hash算法: 散列: 接收一个字符串,然后根据字符串计算出一个尽量不重复的数字。
相同字符串,计算出的数字一定相同
不同的字符串,计算出的数字几乎不同的
关联数组: hash数组
存入元素: 将下标名交给hash算法,计算出一个尽量不重复的序号,将元素存储到数组中序号指定的位置
获取元素: 将下标名交给hash算法,计算出和存入时完全一样的序号,直接去数组中序号位置获取元素值——不用遍历
为什么: 1. 因为下标有意义,便于维护
2. 查找极快——和总元素个数以及存储位置无关!
何时: 1. 今后只要快速查找某个元素时,都用hash数组
2. 今后只要存储有意义的一组元素时,都用hash数组
鄙视: 谈谈对hash的理解:
hash算法; 存入; 获取; 优;
特点: length属性失效,永远为0
遍历: for in循环:
for(var key in hash){//in依次获得每个元素的下标名称
key//自动获得当前元素的下标名
hash[key]//当前元素值
}
2. 数组API: 浏览器已经实现的,我们直接用的函数
数组对象: 存储一组数据,提供操作数据的API
1. 数组转为字符串: 2种:
1. var str=String(arr): 将arr中每个元素转为字符串,再用逗号链接成一个字符串。
2. 可自定义连接符:
var str=arr.join(“自定义连接符”)
固定套路: 1. 无缝拼接: arr.join(“”)
2. 判断数组是空数组: arr.join(“”)===””
3. 动态生成页面元素的内容