特点 效率
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 
