24个JavaScript循环遍历方法,你都知道吗?

JAVAScript 提供了很多循环遍历方法 , 下面就来详细看看这些方法都是怎么用的以及使用时的注意事项:

24个JavaScript循环遍历方法,你都知道吗?

文章插图
一、数组遍历方法1. forEach()forEach 方法用于调用数组的每个元素 , 并将元素传递给回调函数 。数组中的每个值都会调用回调函数 。其语法如下:
 
array.forEach(function(currentValue, index, arr), thisValue)【24个JavaScript循环遍历方法,你都知道吗?】该方法的第一个参数为回调函数 , 是必传的 , 它有三个参数:
  • currentValue:必需 。当前元素
  • index:可选 。当前元素的索引值 。
  • arr:可选 。当前元素所属的数组对象
 
let arr = [1,2,3,4,5]arr.forEach((item, index, arr) => {console.log(index+":"+item)}) 
该方法还可以有第二个参数 , 用来绑定回调函数内部this变量(前提是回调函数不能是箭头函数 , 因为箭头函数没有this):
 let arr = [1,2,3,4,5]let arr1 = [9,8,7,6,5]arr.forEach(function(item, index, arr){console.log(this[index])//9 8 7 6 5}, arr1)注意:
  • forEach 方法不会改变原数组 , 也没有返回值;
  • forEach无法使用 break , continue 跳出循环 , 使用 return 时 , 效果和在 for 循环中使用 continue 一致;
  • forEach 方法无法遍历对象 , 仅适用于数组的遍历 。
2. map()map() 方法会返回一个新数组 , 数组中的元素为原始数组元素调用函数处理后的值 。该方法按照原始数组元素顺序依次处理元素 。其语法如下:
array.map(function(currentValue,index,arr), thisValue)该方法的第一个参数为回调函数 , 是必传的 , 它有三个参数:
  • currentValue:必须 。当前元素的值;
  • index:可选 。当前元素的索引值;
  • arr:可选 。当前元素属于的数组对象 。
 let arr = [1, 2, 3]; arr.map(item {return item + 1;})// 输出结果: [2, 3, 4]该方法的第二个参数用来绑定参数函数内部的this变量 , 是可选的:
 let arr = ['a', 'b', 'c']; [1, 2].map(function (e) {return this[e];}, arr)// 输出结果: ['b', 'c']该方法还可以进行链式调用:
 let arr = [1, 2, 3]; arr.map(item item + 1).map(item item + 1)// 输出结果: [3, 4, 5]注意:
  • map 方法不会对空数组进行检测;
  • map 方法遍历数组时会返回一个新数组 , 不会改变原始数组;
  • map 方法有返回值 , 可以return出来 , map的回调函数中支持return返回值;
  • map 方法无法遍历对象 , 仅适用于数组的遍历 。
3. for offor...of 语句创建一个循环来迭代可迭代的对象 。在 ES6 中引入的 for...of 循环 , 以替代 for...in 和 forEach()  , 并支持新的迭代协议 。其语法如下:
 for (variable of iterable) {statement}该方法有两个参数:
  • variable:每个迭代的属性值被分配给该变量 。
  • iterable:一个具有可枚举属性并且可以迭代的对象 。
该方法可以获取数组的每一项:
 let arr = [{id:1, value:'hello'},{id:2, value:'world'},{id:3, value:'JavaScript'}]for (let item of arr) {console.log(item); }// 输出结果:{id:1, value:'hello'}{id:2, value:'world'} {id:3, value:'JavaScript'}注意: