首页 > 其他分享 >reduce()的用法

reduce()的用法

时间:2024-02-23 14:33:24浏览次数:26  
标签:pre arr cur newArr reduce 用法 let

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

注释:对没有值的数组元素,不执行 reduce() 方法。
注释:reduce() 方法不会改变原始数组。

参数 描述
total 必需。initialValue,或函数先前返回的值。
currentValue 必需。当前元素的值。
index  可选。当前元素的数组索引。
arr   可选。当前元素所属的数组对象

1.简单用法

var  arr = [1, 2, 3, 4];
var sum = arr.reduce((x,y)=>x+y)
var mul = arr.reduce((x,y)=>x*y)
console.log( sum ); //求和,10
console.log( mul ); //求乘积,24

2.高级用法

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

let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
 
let nameNum = names.reduce((pre,cur)=>{
  if(cur in pre){
    pre[cur]++
  }else{
    pre[cur] = 1 
  }
  return pre
},{})
console.log(nameNum); //{Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}

     

    (2)数组去重

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]

 

     (3)将二维数组转化为一维

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

   

(4)将多维数组转化为一维

let arr = [[0, 1], [2, 3], [4,[5,6,7]]]
const newArr = function(arr){
   return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])
}
console.log(newArr(arr)); //[0, 1, 2, 3, 4, 5, 6, 7]

 

标签:pre,arr,cur,newArr,reduce,用法,let
From: https://www.cnblogs.com/yaotuo/p/18029446

相关文章

  • 多线程系列(七) -ThreadLocal 用法及内存泄露分析
    一、简介在Javaweb项目中,想必很多的同学对ThreadLocal这个类并不陌生,它最常用的应用场景就是用来做对象的跨层传递,避免多次传递,打破层次之间的约束。比如下面这个HttpServletRequest参数传递的简单例子!publicclassRequestLocal{/***线程本地变量*/......
  • 9.Polly在NET中的使用,重试、熔断、超时、降级、限流简单用法
    Polly是一个.NET弹性和瞬态故障处理库,允许开发人员以Fluent和线程安全的方式来实现重试、断路、超时、隔离、限流和降级策略。文档: https://gitee.com/hubo/Polly重试(Retry)出现故障自动重试,这个是很常见的场景,如:当发生请求异常、网络错误、服务暂时不可用时,就应该重试。......
  • wget、axel、aria2区别与用法
    首先区别是:wget、axel和aria2都是在命令行下使用的下载工具,但它们在功能和特性上有一些区别。wget是最基础的命令行下载工具,它支持HTTP、HTTPS和FTP协议,并且可以在慢速或不稳定的网络连接下保持健壮性。如果下载过程中发生网络问题,wget会尝试重新下载,直到整个文件下载完成。此外......
  • linux 中 awk 之 sub、gsub、substr、index、match函数的用法
     001、awk中sub函数的用法:sub用于替换,其语法如下:a、[root@pc1test1]#lsa.txt[root@pc1test1]#cata.txt##测试数据abcdxabcdabcdxyzqmnopqriytyxabcdunyeenabcdkabcdeabcabcabc[root@pc1test1]#awk'{sub("abc","QQQ&......
  • &和&&,|和||的用法
    &和&&&:输入了如下指令:command0&,则执行command0并使其进入后台&&:输入了如下指令:command0&&command1,则先从command0开始执行。如果command0执行失败,则不再继续执行command1。如果执行command0执行成功,则继续执行command1。所以,&&的作用是在执行到失败的指令时停止后续指令......
  • guava中eventbus用法
    ​ google的event事件机制可以用于解耦,类似于spring的事件机制,可以同步也可以异步。定时事件(类型随意,guava调度的时候会根据对应的类型调对应的handler)packagegoogle.event;importlombok.AllArgsConstructor;importlombok.Data;@Data@AllArgsConstructorpublic......
  • 【C++】编写一个具有老式风格接口的函数,其原型如下:int reduce(long arr[], int n)。实
    #include<iostream>#include<string>usingnamespacestd;intreduce(longarr[],intn){sort(arr,arr+n);autostr=unique(arr,arr+n);returnstr-arr;}intmain(){longarr[10]={15,8,5,6,11,11,6,6,198,50};......
  • 英语形容词后置用法
    问题来源:TheEconomist:  'Ever-strongercopyrightprotectionhaswithheldincalculableamountsofculturefromthepublicdomain,'arguesBenSobelinaguestessay.'Butwewon’trepairthatdamagewithexceptionstailor-madetobenefitthe......
  • thread_local的一些用法
    thread_local变量thread_local变量是C++11新引入的一种存储类型。它会影响变量的存储周期(Storageduration),C++中有4种存储周期:automaticstaticdynamicthread有且只有thread_local关键字修饰的变量具有线程周期(threadduration),这些变量(或者说对象)在线程开始的时候......
  • Flink 增量窗口聚合函数 ReduceFunction(归约函数)和AggregateFunction(聚合函数)
    Flink增量窗口聚合函数定义了窗口分配器,只是知道了数据属于哪个窗口,可以将数据收集起来了;至于收集起来到底要做什么,其实还完全没有头绪。所以在窗口分配器之后,必须再接上一个定义窗口如何进行计算的操作,这就是所谓的“窗口函数”(windowfunctions)。经窗口分配器处理之后,数据可......