es6中新增了一些方法可以更方便的操作数组,如every(),some(),filter(),map(),reduce(),forEach(),本文主要介绍他们的用法以及区别
every:检测数组中的每个元素是否都符合条件 - 所有
let arr = [10, 2, 5, 22, 45]
let everyNum = arr.every((item,index)=>{
return item > 44
})
console.log('everyNum=>',everyNum) //false复制代码
some:检测数组中是否有元素满足条件 - 部分
let arr = [10, 2, 5, 22, 45]
let someNum = arr.some((item,index)=>{
return item > 44
})
console.log('someNum=>',someNum) //true复制代码
filter: 返回数组中满足条件的元素(过滤)
let arr = [10, 2, 5, 22, 45]
let fliterNum = arr.filter((item,index)=>{
return item > 10
})
console.log('fliterNum=>',fliterNum) //[22, 45]复制代码
map:返回处理后的数组
let arr = [10, 2, 5, 22, 45]
let mapNum = arr.map((item,index)=>{
return item + 1
})
console.log('mapNum=>',mapNum) //[11, 3, 6, 23, 46]复制代码
reduce:让数组的前后项做出某种计算
let arr = [10, 2, 5, 22, 45]
let reduceNum = arr.reduce((prev, next, index)=>{
//prev: 第n次和第n+1次的和
//next: 每次要往上加的值
return prev + next
})
console.log('reduceNum=>',reduceNum) //84复制代码
forEach:循环数组中的每一项做一件事,不能return出来
let arr = [10, 2, 5, 22, 45]
let forEachNum = arr.forEach((item, index)=>{
console.log('forEach=>', item)
//forEach=> 10 forEach=> 2 forEach=> 5 forEach=> 22 forEach=> 45
})复制代码
相比于map,forEach没有返回值(undefined),不能return出来,并且是直接修改原来的arr的值;map返回一个数组,原数组arr不受影响;