js中reduce()方式

先容reduce reduce() 方式吸收一个函数作为累加器,reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(上一次回调的返回值),当前元...

先容reduce

reduce() 方式吸收一个函数作为累加器,reduce 为数组中的每一个米素依次执行回调函数,不包括数组中被删除或从未被赋值的米素,接受四个参数:初始值(上一次回调的返回值),当前米素值,当前索引,原数组。

语法:arr.reduce(callback,[initialValue])
callback:函数中包罗四个参数
- previousValue (上一次挪用回调返回的值,或者是提供的初始值(initialValue))
- currentValue (数组中当前被处置的米素)
- index (当前米素在数组中的索引)
- array (挪用的数组)
 
initialValue (作为第一次挪用 callback 的第一个参数。)


简朴应用

const arr = [1, 2, 3, 4, 5]
const sum = arr.reduce((pre, item) => {
    return pre + item
}, 0)
console.log(sum) // 15


案例

凭据工具内里的某一项属性分类,如下效果所示:


let arr = [{index:0},{index:0},{index:1},{index:2},{index:2}];
let res = arr.reduce((pre,item)=>{
 let temp = [];
 pre.forEach((val)=>{
  if(val&&val.length) {
   if(val[0].index==item.index) {
    val.push(item);
    return pre;
   }
  }
 })
 temp.push(item);
 pre.push(temp);
 return pre;
},[]);

效果如下:



不使用reduce实现上述需求:

groupBy(array, f) {
    let groups = {};
    array.forEach(function(o) {
        let group = JSON.stringify(f(o));
        groups[group] = groups[group] || [];
        groups[group].push(o);
    });
    return Object.keys(groups).map(function(group) {
        return groups[group];
    });
};

let sorted = this.groupBy(this.arr, function(item){
                return [item.index];   //凭据工具内里的每一项的index分类
             });

1

思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入

3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/4612

  • 发表于 2021-04-05 12:46
  • 阅读 ( 264 )
  • 分类:互联网

0 条评论

请先 登录 后评论
锄禾啊飞
锄禾啊飞

743 篇文章

你可能感兴趣的文章

相关问题