ES6中新增的一些数组方法(map、filter、reduce,find、every、some、forEach)

1. map函数

map函数是一个映射函数,有一一映射的关系。

array.map((item) => {…})

let array = [1,2,3,4,5]
let newArr = array.map(item => {
    return item + 1
})
console.log(newArr) //[2,3,4,5,6]

可以看到结果是遍历了数组中的每一个数并加上了1。

2. filter函数

filter是过滤的意思,调用了filter方法后,会得到一个过滤后的新数组。

array.filter( (item) => {…} )

let array = [1,2,3,4,5]
let newArr = array.filter(item => {
    return item > 3 
})
console.log(newArr) //[4,5]是一个新数组

可以看到结果是循环遍历每个数据,并判断是否符合条件,只有true才会返回这个元素。

3. reduce函数

reduce函数是迭代函数,常用于计算累加等操作。

array.reduce((preValue,curValue,index,array) => {…})

reduce函数可以接收四个参数,分别是前一个值,当前值,索引和数组。如果不指定preValue,那么默认将数组第一个元素作为前一个值,下一次循环的时候,preValue就是上一次的curValue,而curValue会变成下一个索引对应的值,以此类推。

let arr = [[1,2],[3,4],[5,6]]
let newArr = arr.reduce((a,b) => {
    return a.concat(b)  //合并数组
},[])
console.log(newArr) //[1,2,3,4,5,6]

4. find函数

和filter函数有点相似,也是寻找符合目标的对象,和filter有所区别的是找到第一个符合要求的对象就会停止寻找,返回一个对象,而filter返回的是所有符合要求的对象组成的新数组

let array = [1,2,3,4,5]
array.find( item => item > 2) //3

5. every函数、some函数

因为两个函数的作用类似所以就一起解释

  • every函数是遍历数组,只有每一个对象都符合条件,才会返回true,否则返回false
  • some函数是遍历数组,只要有一个或一个以上的对象符合条件,就返回true
let users = [
    {name:"Jill",age:10},
    {name:"Alex",age:18},
    {name:"Bill",age:20},
    {name:"Tony",age:24}
   ];
 
 let isAdult_every=users.every(user=>{
      return user.age>18;
   })
 
 let isAdult_some=users.some(user=>{
    return user.age>18;
 })
 
 console.log(isAdult_every)  //false
 console.log(isAdult_some)  //true
 

6. forEach函数

用于遍历数组,类似于for循环,没有返回值

let array = [1,2,3,4,5]
array.forEach(number => {
    console.log(number)  //1 2 3 4 5
})

小结

如果要查询数组中的唯一值,用some方法更适合,在some里return true就会终止遍历,更加省时。

你可能感兴趣的:(JS,ES6,js)