ECMAScript为数组定义了5个迭代方法,每个方法接收两个参数:以每一项为参数运行的函数,以及可选的作为函数运行上下文的作用域对象(影响函数中 this 的值)。传给每个方法的函数接收 3个参数:数组元素、元素下标和数组本身。它们的功能又各有差别,现记录如下:
some():对数组每一项元素都运行传入的函数,如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。
let arr=[0,5,3,8,34,7,8]
let res=arr.some((item,index)=>{
return item>4
})
console.log(res); //true
every():对数组每一项都运行传入的函数,如果每一项函数都返回 true,则这个方法返回 true。如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。用于检测数组所有元素是否都符合指定条件。
let arr=[0,5,3,8,34,7,8]
let res=arr.every((item,index)=>{
return item>4
})
console.log(res); //false
filter():对数组每一项都运行传入的函数,filter会根据函数中的筛选条件将返回的结果组成一个新的数组并返回,可用于过滤数组中的对象。
let arr=[0,5,3,8,34,7,8]
let res=arr.filter((item,index)=>{
return item>4
})
console.log(res); //[5, 8, 34, 7, 8]
map():通过指定函数处理数组的每个元素,并返回处理后的新数组。
let arr=[0,5,3,8,34,7,8]
let res=arr.map((item,index)=>{
return item+1
})
console.log(res); //[1, 6, 4, 9, 35, 8, 9]
forEach():对数组每一项都运行传入的函数,没有返回值。
let arr=[0,5,3,8,34,7,8]
let res=arr.forEach((item,index)=>{
return item>4
})
console.log(res); //undefined