JS数组的5个迭代方法
前言
ECMAScript为数组定义了5个迭代方法
,每个方法接受两个参数,第一个参数是一个以每个数组元素为参数运行迭代的函数,该函数接受3个参数,分别是数组元素、索引、数组本身
,第二个参数为可选参数,即影响函数作用域的this对象。
注意,这5个方法都不会改变调用它们的数组。
一、 every()
(返回布尔值)
如果对于每一个元素的迭代都返回true,则这个方法返回true,有一项为false,就返回false
let num = [1,2,5,4,87,99];
let flag = num.every( item => {
return item > 2 ;
})
console.log(flag);//false
必须每一项都为true,该方法才返回true,在该案例中,当函数迭代到5时就返回false了,所以flag为false
二、some()
(返回布尔值)
当迭代到某一项为true时即返回true,剩下的项则不再进行迭代,该方法对于内存开销较小,推荐使用
let num = [1,2,5,4,87,99];
let flag = num.some( item => {
return item > 2 ;
})
console.log(flag);//true
三.map
(返回新数组)
map将每一项进行一个处理,把处理后的项添加到一个新数组并返回
let num = [10,2,5,4,87,99];
let newsArray = num.map(item => {
return item * 3
})
console.log(newsArray);//[30, 6, 15, 12, 261, 297]
四.filter()
(返回新数组)
filter()将条件为true的项添加到一个新数组并返回,通常用于过滤数组的项并得到一个新数组
let num = [1,2,5,4,87,99];
let newArray = num.filter( item => {
return item > 2
})
console.log(newArray);// [5, 4, 87, 99]
四.forEach()
(无返回值,相当于for循环)
forEach() 没有返回值,相当于使用for循环遍历数组
const num = [10, 2, 5, 4, 87, 99]
const newsforEachArray = [];
num.forEach(item => {
newsforEachArray.push(item)
})
console.log(newsforEachArray);//[10, 2, 5, 4, 87, 99]
console.log(newsforEachArray === num);//false 实现了数组浅拷贝