zoukankan      html  css  js  c++  java
  • filter-map-reduce 高级数组函数

    filter:

    创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

    【注意】filter() 不会对空数组进行检测。

         filter() 不会改变原始数组。

    map:

    返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

    按照原始数组元素顺序依次处理元素。

    【注意】 map() 不会对空数组进行检测。

        map() 不会改变原始数组。

    reduce:

    接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

    可以作为一个高阶函数,用于函数的 compose。

    【注意】reduce() 对于空数组是不会执行回调函数的。

    下面是一个利用filter,map,reduce各个语法进行操作的实例

    const nums = [20, 10, 222, 30, 40, 444]

    // 联合使用filter,map,reduce + es6语法
    // 实现需求:将所有小于100的数字进行转化: 全部*2 然后求和
    let total
    = nums.filter(n => n < 100). map(n => n * 2). reduce((preValue, n) => preValue + n) // 联合使用filter,map,reduce // 实现需求:将所有小于100的数字进行转化: 全部*2 然后求和 let total = nums.filter(function(n){ return n < 100 }).map(function(n){ return n * 2 }).reduce(function(preValue, n){ return preValue + n }, 0) // 1- filter函数的使用 // 需求:取出所有小于100的数字 // 20 10 30 40 let newNums = nums.filter(function (n) { return n < 100 }) // 2- map函数的使用 对所有数据都进行一次变化 // 需求:将所有小于100的数字进行转化: 全部*2 // 40 20 60 80 let new2Nums.map(function (n) { return n * 2 }) // 3- reduce函数的使用 // 需求:将所有小于100的数字进行转化: 全部*2 然后求和 // reduce作用:对数组中所有的内容进行汇总 // new2Nums.reduce(参数1, 参数2) // 参数1 --- function(preValue, n)) preValue -- 上一次的返回值 // 参数2 --- 初始化值 let totle = new2Nums.reduce(function (preValue, n) { return preValue + n }, 0) // 第一次:preValue -- 0 / n -- 40 // 第二次:preValue -- 0+40=40 / n -- 20 // 第三次:preValue -- 40+20=60 / n -- 60 // 第四次:preValue -- 60+60=120 / n -- 80 // 最后120+80=200

  • 相关阅读:
    nginx限流方案的实现(三种方式)
    Pthreads并行编程之spin lock与mutex性能对比分析(转)
    C/C++中float和double的存储结构(转)
    list_entry(ptr, type, member)——知道结构体内某一成员变量地址,求结构体地址
    stderr和stdout详细解说(转)
    结构体内存分配理解
    C中的C文件与h文件辨析(转)
    访问vector元素方法的效率比较(转)
    linux c中select使用技巧——计时器(转)
    thread::id
  • 原文地址:https://www.cnblogs.com/allie71/p/13199567.html
Copyright © 2011-2022 走看看