特点 效率
for
1 | let data = [{id:1},{id:2},{id:3}] |
最基础的,相比于其他支持break、continue
for~in
1 | let data = [{id:1},{id:2},{id:3}] |
循环后id变成了字符串。(i是索引’0’ ‘1’ ‘2’)
多用于遍历对象1
2
3
4
5let obj = {a:1,b:2,c:3}
for(let i in obj) {
obj[i] += 1
}
console.log(obj)
forEach
1 | let hasSpaceInValue = false |
不打算改变数据时使用。1
2
3
4
5let arr = [1, 2, 3, 4, 5];
arr.forEach((num, index) => {
return arr[index] = num * 2;
});
console.log(arr)
可以改变原始数组。
map
1 | let arr = [1, 2, 3, 4, 5]; |
创建新数组(分配内存空间存储新数组)
es6 for~of
代替for~in和forEach
遍历数组、字符串、映射(maps)、sets(集合)————iterable迭代器对象1
2
3
4
5
6
7let data = [{id:1},{id:2},{id:3}]
for(let i of data) {
console.log(i)
if(i.id === 1) {
break;
}
}
遍历的是元素值;可以响应break、continue、return
(考虑兼容问题)
filter
1 | let target = data.list.filter( |
不改变原数组
reduce
1 | var arr = [1,2,8,20]; |
可同时将前面数组项遍历产生的结果与当前遍历项进行运算
效率
for~in map
for for~of forEach