es6数组方法reduce()方法

含义

reduce() 函数将数组元素进行组合,例如求和,取最大值 第一个参数是指定函数,第二个参数是传递给函数的初始值;函数会返回一个简化后的值,
t7 = t.reduce(function(x,y){return x+y},0)//10 依次进行简化值,将t每项遍历完返回最后的值

初始数据

var objects = [
  {name:'group1', usedCount: 2, color:'red'},
  {name:'group1', usedCount: 1, color:'blue'},
  {name:'group1', usedCount: 1, color:'orange'},
  {name:'group2', usedCount: 2, color:'blue'},
  {name:'group2', usedCount: 2, color:'red'},
  {name:'group3', usedCount: 1, color:'red'},
  {name:'group3', usedCount: 4, color:'red'}
]

期待结果

 [
   {name:'group1', usedCount: 4, color:['red','blue','orange']},
   {name:'group2', usedCount: 4, color:['blue','red']},
   {name:'group3', usedCount: 5, color:['red']}
]

reduce方法使用

var result = objects.reduce(function(x,y){
    //x0为初始值,相当于第一个x
var x0 = x.find(x0 => x0.name === y.name);
if(x0){
    x0.usedCount = x0.usedCount+y.usedCount;
    if(x0.color.indexOf(y.color) == -1){
        x0.color.push(y.color)
    }
    
}else{
    var xn = {
        name:y.name,
        usedCount:y.usedCount,
        color:[y.color]
    }
    x.push(xn);
}
return x;
},[])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值