前言
今天给大家讲js数组的迭代方法,我之前对于这个一直是处于迷糊的状态,今天看了书,一下子理清了,决定和大家分享一下。
ECMAscript为数组定义了五个迭代方法
1.every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
2.filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
3.forEach() 方法对数组的每个元素执行一次给定的函数。
4.map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
5.some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个布尔值。
这五个迭代方法里面分别有三个值Item index array
item 用于测试的当前值。
index 用于测试的当前值的索引。
array 调用当前的数组。
首先我们说 every() 和 some(),因为它们最相似
共同点:
1.他们的函数结果都返回布尔值 也就是true或者false。
2.它们里面有三个值分别是item index array
3.都是从数组中搜索符合某个条件的元素
对于every来说。所有的函数值都返回true 他才会返回true
对于some来说。有一项函数值返回true 他就会返回true
我们来上代码
let arr = [1, 2, 5, 14, 32, 76, 8, 456, 9, 5];
let everyResult = arr.every(function (item, index, array) {
return item > 2;
})
console.log(everyResult);
// 输出结果 false
let someResult = arr.some(function (item, index, array) {
return item > 2;
})
console.log(someResult);
// 输出结果 true
在 every() 中,因为数组1和2都不大于2,没有全部满足条件,所以返回false
在 some()中 ,因为数组5和14等数组都大于2,有一个满足条件即可,所以返回true
接下来我们看 filter() 方法
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。 filter() 会筛选出所有符合条件的数组。
let arr = [1, 2, 5, 14, 32, 76, 8, 456, 9, 5];
let filterResult = arr.filter(function (item, index, array) {
return item > 2;
})
console.log(filterResult);
// 输出结果 [5, 14, 32, 76, 8, 456, 9, 5]
然后我们看 map() 方法
map()方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
读的有点晦涩哈,就是这个数组的每一项都是对原始数组中同样位置的元素运行传入函数而返回的结果。例如将每一项都乘2,返回包含所有结果的数组。
它有返回值。返回新数组,原数组不变。
在你需要返回一个新数组的时候用它。
let arr = [1, 2, 5, 14, 32, 76, 8, 456, 9, 5];
let mapResult = arr.map(function (item, index, array) {
return item * 2;
})
console.log(mapResult);
// 输出结果 [2, 4, 10, 28, 64, 152, 16, 912, 18, 10]
它返回了一组数组,包含的是原始数组中都乘2的结果。
最后一个是 forEach()
forEach()方法对数组的每个元素执行一次给定的函数。
本质上,forEach()方法相对于for循环遍历数组。
它没有返回值。
在不改变数据,只用数据做一些事情就用它。