JavaScript中的数组、伪数组、json的遍历
-
数组
-
定义一个空数组:var arr = []
- []容器里头可以存放的类型不限制
- length 是 数组的一个属性
- arr.length = 0 清空数组
-
遍历数组
-
(时间复杂度来计算的)
-
低效版本:
for (var i = 0; i < a.length; i++)
分析:
i=0
a.length
i<a.length
i++
假如循环n次,
1 + 3n -
高效版
for (var i = 0, l = a.length; i < l; i++)
分析:
i = 0
l = a.length
i < l
i++
假如循环n次:
2 + 2n -
遍历二维数组
-
var a = [[1,2,3],[4,5,6],[7,8,9]]
-
双重for循环即可遍历每一个元素
-
for (var i = 0, l = a.length; i < l; i++) {
for (var j = 0; j < a[i].length; j++) {
扫描二维码关注公众号,回复: 15669345 查看本文章 console.log(a[i][j])
}}
-
-
foreach
-
arr.forEach(num => {
console.log(num)
})
等于arr.forEach(funtion(num){
consolg.log(num)
})
- forEach方法中的function回调有三个参数:
- value 第一个参数是遍历的数组内容, 不可以修改内容
- index 第二个参数是对应的数组索引, 无法控制index值
- arr第三个参数是数组本身
- break return continue不支持 得用try catch
- 遇到return不会报错也不生效 es5才有的 for控制控制起点each不行
-
-
-
json
- 定义:var json ={} 无序性
- 属性名正常要么是字符串要么是数值
- json的属性值可以是任意类型
- {value:111,value1:222}
- value value1都是json的属性名
- 111 222是json的属性值
- 这样的组合简称键值对
- 遍历
- for (var key in json) {}
- 表示将json里头的key逐个遍历
- key对应属性名(key),json[key]对应属性值(value)
- json[key]就可以拿到key变量指向的属性名的属性值
- 因为key是变量,所以只能用json[key]这种写法
- for (var key in json) {}
- 定义:var json ={} 无序性
-
伪数组
- 具备某些特定属性的json,就是伪数组
- 伪数组就是json,json不一定是伪数组
- 伪数组:假的数组,所以伪数组要有length属性
- 定义:var a ={0:‘index1’,1:‘index2’,length:2}
- 要求键都是number类型√√√
- 要求要有length属性
- 要求length属性值跟键值对的个数一样
- 遍历
- 可以使用json的操作
- for (var key in json)
- json[key]会将0,1两个键值遍历出来,同时将length属性也遍历出来
- for (var key in json)
- 也可以使用数组的操作
- for (var i = 0, l = arr.length; i < l;i++) {json[i]}
- 只会遍历出0,1两个键值
- for (var i = 0, l = arr.length; i < l;i++) {json[i]}
- 伪数组转成数组
- var json = {0:‘index1’,1:‘index2’,length:2}
- var arr = Array.from(json)
- Array.from是用来将伪数组转成数组的一个api
- 转换结果:
- [‘index1’,‘index2’]
- 转换注意事项:
- 只根据length来取转换之后的数组的元素
- 可以使用json的操作