zoukankan      html  css  js  c++  java
  • 功能强大的js数组方法:reduce

    arr.reduce()方法接受一个函数作为累加器,数组中的每个值从左到右开始缩减,最终为一个值。

    reduce接受的参数主要有callback(回调函数)和可选参数initvalue(作为第一次调用callback的第一个参数,不传默认数组的第一个元素):

    callback回调函数里又接受四个参数分别是:

    previousValue(上一次调用回调函数返回的值,或者是提供的初始值(initValue))

    currentValue(数组中当前被处理的元素)

    index(当前元素在数组中的索引)

    array(调用reduce的数组)

    简单应用:

    1.求和

    var total=[0,1,2,3].reduce((acc,cur)=>acc+cur,0)
      //total 6

    2.将二维数组转化为一维

    var arr1=[
        [0,1],
        [2,3],
        [4,5],
    ].reduce((acc,cur)=>acc.concat(cur),[])
    //arr1 [0,1,2,3,4,5]

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

    var names=['Alice','Bob','Tiff','Bruce','Alice'];
    var count=names.reduce(function(allNames,name){
        console.log(allNames)
        if(name in allNames){
            allNames[name]++;
        }else{
            allNames[name]=1;
        }
        return allNames;
    },{})
      //count is {Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}

    4.数组去重

    var arr=[1,2,1,2,3,5,4,5,3,4,4,1,6];
    let result=arr.sort().reduce((init,current)=>{
        if(init.length===0 || init[init.length-1]!==current){
            init.push(current);
        }
        return init;
    },[]);
    //result is [1,2,3,4,5,6]
  • 相关阅读:
    Mysql数据优化--DBA梳理珍藏篇
    Spring缓存注解@Cacheable
    Spring常用知识点
    谈一谈对MySQL InnoDB的认识及数据库事物处理的隔离级别
    MySQL主从复制的实现过程
    List 与 数组 互转
    位运算实现小正整数乘法
    最大的K个数
    Java 编码与字符(2)
    JSP工作原理
  • 原文地址:https://www.cnblogs.com/myspecialzone/p/10484252.html
Copyright © 2011-2022 走看看