LLwanran / front_end_studying

前端知识要点
https://llwanran.github.io/front_end_studying/
2 stars 1 forks source link

数组迭代方法 forEach,map,filter, reduce, every,some 之间的区别?(北京阿里高德地图1面) #32

Open LLwanran opened 5 years ago

LLwanran commented 5 years ago

在js中有非常多数组方法,其中迭代方法有6种,我们平时一般爱用forEach和map,好用又高效,不用什么都是for循环大法,但是这些方法都很像,到底有什么区别呢?

这6个方法均为ES6语法,IE9及以上才支持。不过可以通过babel转意支持IE低版本。 以下均不改变原数组。

  1. forEach 让数组中的每一项做一件事(返回当前元素及索引)

    arr.forEach(item => console.log(item))
  2. map 让数组通过某种计算产生一个新数组(返回Array)

    let result = arr.map((item, index, arr) => {
    return item>60 ? '及格' : '不及格';
    })
  3. filter 筛选出数组中符合条件的项,组成新数组(返回Array)

    let result = num.filter(item => item % 3 === 0)
  4. reduce 让数组中的前项和后项做某种计算,并累计最终值(返回Number)

    let total = store.reduce((temp, item, index) => {
    return temp + item;
    })
  5. every 检测数组中的每一项是否符合条件,全部满足才会true(返回Boolean)

    let flag = arr.every((item,index,arr) =>item > 1)
  6. some 检测数组中是否有某些项符合条件,只要满足1个即为true(返回Boolean)

    let num = arr.some((item, index, arr) => {
    return item > 1
    })

参考文档: ES5中新增的Array方法详细说明

1106942-20170417175022196-1622185158