首页 > 其他分享 >es6 reduce

es6 reduce

时间:2023-11-23 20:03:28浏览次数:27  
标签:es6 arr cur 初始化 初始值 reduce 数组 prev

1. 语法:

arr.reduce((prev, cur, index, arr) => {
...
}, init);

①. 参数:
    arr:表示原数组.
    prev:表示上一次调用回调时的返回值、或初始值init(第一次).
    cur:表示当前正在处理的数组元素.
    index:表示当前正在处理的数组元素的索引,若有init值,则索引为0,否则索引为1.
    init:表示初始值.

2. 实例:

var arr = [3, 9, 4, 3, 6, 0, 9];

// 1. 求数组项之和
var sum = arr.reduce((prev, cur) => {
    return prev + cur;
}, 0);
①. 由于传入了初始值0,开始时prev的值为0,cur的值为数组第一项3.
②. 相加后返回值为3,作为下一轮回调的prev值,再继续与下一个数组项相加...
③. 直至完成所有数组项的和并返回.

// 2. 求数组项最大值
var max = arr.reduce((prev, cur) => {
    return Math.max(prev, cur);
});
①. 由于未传入初始值,所以开始时prev的值为数组第一项3,cur的值为数组第二项9.
②. 取两值最大值后继续进入下一轮回调.

// 3. 数组去重
var newArr = arr.reduce((prev, cur) => {
    prev.indexOf(cur) === -1 && prev.push(cur);
    return prev;
}, []);
实现基本原理:
①. 初始化一个空数组
②. 将需要去重处理的数组中的第1项在初始化数组中查找,如果找不到(空数组中肯定找不到),就将该项添加到初始化数组中
③. 将需要去重处理的数组中的第2项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中
④. ……
⑤. 将需要去重处理的数组中的第n项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中
⑥. 将这个初始化数组返回

标签:es6,arr,cur,初始化,初始值,reduce,数组,prev
From: https://blog.51cto.com/u_16237074/8532209

相关文章

  • HDFS与MAPREDUCE操作
     HDFS文件操作在分布式文件系统上验证HDFS文件命令,如下。hadoopfs[genericOpitions][-ls<path>] //显示目标路径当前目录下的所有文件[-lsr<path>] //递归显示目标路径下的所有目录及文件(深度优先)[-du<path>] //以字节为单位显示目录中所有文件的大小,或该文......
  • Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
    原文链接:https://tecdat.cn/?p=34286原文出处:拓端数据部落公众号分析师:ShichaoZhong项目挑战如何处理庞大的数据集,并对数据进行可视化展示;在后续分析中特征选择是重点之一,要根据事实情况和数据易处理的角度来筛选变量解决方案任务/目标根据已有的车祸数据信息,计算严重车祸......
  • ECMAScript 6 (ES6)
    ECMAScript6.0(以下简称ES6)是JavaScript语言的新一代标准,2015年6月正式发布。ECMAScript和JavaScript的关系ES是推荐和标准的浏览器脚本的规格,Javascript是对ES的一种实现,未来有可能会新的脚本,现在主流浏览器也开始淡化Javascript这个名称,一个原因是Javascript其实和Java......
  • ES6的箭头函数,箭头函数不会创造块作用域,无法生成一个独立的环境,this指向上层的this
    varcolor='green';vartest4399={color:'blue',getColor:function(){varcolor="red";alert(this.color);}}vargetColor=test4399.getColor;getColor();test4399.getColor();以上JavaScrip......
  • 使用ES6生成器(Generators)和redux-saga与使用ES2017的async/await和redux-thunk相比的
    内容来自DOChttps://q.houxu6.top/?s=使用ES6生成器(Generators)和redux-saga与使用ES2017的async/await和redux-thunk相比的优缺点。目前关于redux的最新讨论焦点是redux-saga/redux-saga。它使用生成器函数来监听/分发actions。在我深入研究之前,我想了解使用redux-saga与下......
  • let是es6中声明变量的方式,有自己的作用域块,可以放变量,所以let绑定for循环时,每个i都有
    for(leti=0;i<2;i++){setTimeout(function(){console.log(i)},100);}for(vari=0;i<2;i++){setTimeout(function(){console.log(i)},100);}问:控制台打印的结果是?0122①Js是单线程的,Settimeout是异步宏任务,所以代码执行遇到异步的,就......
  • js常见的继承方式包括原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继
    js常见的继承方式包括原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承,以及ES6新增的class继承,但不包括关联继承https://www.cnblogs.com/Leophen/p/11401734.html构造函数继承是每次继承都会把父类的所有属性方法全部拷贝一份,而对于公用的方法......
  • ES6 module和CommonJS的区别
    ES6module和CommonJS的区别主要有5点ES6module是编译时导出接口,CommonJS是运行时导出对象。ES6module输出的值的引用,CommonJS输出的是一个值的拷贝。ES6module语法是静态的,CommonJS语法是动态的。ES6module导入模块的是只读的引用,CommonJS导入的是可变的,是一个普通的变......
  • 无涯教程-MongoDB - Map-Reduce
    根据MongoDB文档,Map-reduce是一种数据处理范例,用于将大量数据压缩为有用的聚合输出。MongoDB使用mapReduce命令进行map-reduce操作。MapReduce通常用于处理大型数据集。MapReduce命令以下是基本mapReduce命令的语法->db.collection.mapReduce(function(){emit(key,......
  • 前端javasript——forEach、map、filter和reduce的使用场景
    (文章目录)⭐前言大家好,我是yma16,不止前端,本文分享关于前端javasript——forEach、map、filter、reduce区别与使用。自我介绍前端->全栈开发,csdn内容合伙人,2023csdn新星计划Node赛道Top1,csdn2023新星计划vue3+ts赛道导师,阿里云社区专家博主,华为云享专家,前端技术栈:vue2v......