es6 reduce
  4Sc2EobNVfno 2023年11月24日 19 0

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项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中
⑥. 将这个初始化数组返回
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
4Sc2EobNVfno
作者其他文章 更多