JS 内置函数 数组遍历方法总结

2021-04-01  本文已影响0人  lazy_tomato

START

一.普通for循环

var arr = [1, 2, 3, 4, 5, 6];

for (var i = 0; i < arr.length; i++) {
  console.log("索引:" + i + " 值:" + arr[i]);
}
索引:0值:1
索引:1值:2
索引:2值:3
索引:3值:4
索引:4值:5
索引:5值:6

二.forEach

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

let arr = ["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"];

let out = arr.forEach((element, index,array,) => {
  console.log("element:" + element + " index:" + index + " array:" + array );
});

console.log("看一看foreach方法有没有返回值:",out)
element:q index:0 array:q,w,e,r,t,y,u,i,o,p
element:w index:1 array:q,w,e,r,t,y,u,i,o,p
element:e index:2 array:q,w,e,r,t,y,u,i,o,p
element:r index:3 array:q,w,e,r,t,y,u,i,o,p
element:t index:4 array:q,w,e,r,t,y,u,i,o,p
element:y index:5 array:q,w,e,r,t,y,u,i,o,p
element:u index:6 array:q,w,e,r,t,y,u,i,o,p
element:i index:7 array:q,w,e,r,t,y,u,i,o,p
element:o index:8 array:q,w,e,r,t,y,u,i,o,p
element:p index:9 array:q,w,e,r,t,y,u,i,o,p
看一看foreach方法有没有返回值: undefined

下列代码可以看到,元素是添加进去了,但是并没有被遍历

let arr = ["q", "w", "e", "r"];

let out = arr.forEach((element, index, array) => {
console.log("element:" + element + " index:" + index + " array:" + array);
arr.push("新增的元素" + index);
});

console.log("看一看foreach方法有没有返回值:", out);

// 打印
element:q index:0 array:q,w,e,r
element:w index:1 array:q,w,e,r,新增的元素0
element:e index:2 array:q,w,e,r,新增的元素0,新增的元素1
element:r index:3 array:q,w,e,r,新增的元素0,新增的元素1,新增的元素2
看一看foreach方法有没有返回值: undefined
  1. forEach()总是返回 undefined值,并且不可链式调用 .

上述代码已经打印了返回值,是undefined。

  1. forEach 不会直接改变调用它的对象,但是那个对象可能会被 callback 函数改变。

个人理解就是,forEach默认不会直接修改原数组,但是呢,也可以在方法中对原数组进行修改。

  1. 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。如果你需要中止或跳出循环,forEach() 方法不是应当使用的工具。
  2. 如果使用 promise 或 async 函数作为 forEach() 等类似方法的 callback 参数,最好对造成的执行顺序影响多加考虑,否则容易出现错误。

三.Map()函数

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // Return element for new_array 
}[, thisArg])
let arr = [1, 2, 3, 4];

let newArr = arr.map(function (element, index) {
  return element + 4;
});

console.log("原本的数组:",arr,"新返回的数组",newArr)



原本的数组: [ 1, 2, 3, 4 ] 新返回的数组 [ 5, 6, 7, 8 ]

四.filter()函数

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

五.some()函数

some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

六.every()函数

every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。

七.find()函数

八.findIndex()函数

findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

tips

说说forEachmap的区别

如何选择

END

2021/04/01

上一篇下一篇

猜你喜欢

热点阅读