• reduce详细用法


    对象里的属性求和
    var result = [ { subject: 'math', score: 10 }, { subject: 'chinese', score: 20 }, { subject: 'english', score: 30 } ]; var sum = result.reduce(function(prev, cur) { return cur.score + prev; }, 0); console.log(sum) //60

    将二维数组转化为一维
    // let arr1 = arr.reduce((prev,cur)=>prev.concat(cur),[])//二维数组转换成一维数组
    // console.log(arr1)

       将多维数组转化为一维

      
    let arr2 = [[1,2],[6,23],[2,[7,34,25]]]
    let format = function(arr){
    return arr.reduce((prev,cur)=>prev.concat(Array.isArray(cur)?format(cur):cur),[])
    }
    console.log(format(arr2))
     
    数组降维还可以用flat()
    [1, 2, [3,[4,6]]].flat(Infinity)

    数组去重 

    let arr = [1,2,3,4,4,1]
    let newArr = arr.reduce((pre,cur)=>{
        if(!pre.includes(cur)){
          return pre.concat(cur)
        }else{
          return pre
        }
    },[])
    console.log(newArr);// [1, 2, 3, 4]

    与2019年11.20发现的的新方法
    function flatten(arr){
      while(arr.some((item)=>Array.isArray(item))){
        arr = [].concat(...arr)
      }

      return arr

    }

    计算数组中每个元素出现的次数

    let names = ['lili', 'B', 'T', 'Br', 'lili'];
    
    let nameNum = names.reduce((pre,cur)=>{
      if(cur in pre){
        pre[cur]++
      }else{
        pre[cur] = 1 
      }
      return pre
    },{})
    console.log(nameNum); //{lili: 2, B: 1, T: 1, Br: 1}
    arr.reduce(callback,[initialValue])
    callback (执行数组中每个值的函数,包含四个参数)
    
        1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
        2、currentValue (数组中当前被处理的元素)
        3、index (当前元素在数组中的索引)
        4、array (调用 reduce 的数组)
    
    initialValue (作为第一次调用 callback 的第一个参数。)
    
    
    var arr = [1, 2, 3, 4];
    var sum = arr.reduce(function(prev, cur, index, arr) {
        console.log(prev, cur, index);
        return prev + cur;
    })
    console.log(arr, sum);
    打印结果:
    1 2 1
    3 3 2
    6 4 3
    [1, 2, 3, 4] 10

  • 相关阅读:
    java8 list 删除元素 简单版
    java8 list 删除元素 结构复杂版
    xshell 连接 centos 中的 vi 配色
    Redis 运行出错
    电脑清理秘籍 [ 精心总结 ]
    团队项目之后的反思
    团队项目心得 [ 感想 ]
    团队项目心得 [ 第二阶段项目总结 ]
    团队项目心得 [ 第一阶段项目总结 ]
    《创新者》读书笔记
  • 原文地址:https://www.cnblogs.com/MDGE/p/11303064.html
Copyright © 2020-2023  润新知