zoukankan      html  css  js  c++  java
  • 对象数组根据某一相同项合并其他属性为一个数组

     

    对象数组示例:

    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']}
    ]
    

    这是根据对象的name进行合并,合并后,usedCount累加,color合并为数组。


    方法:

    var result= objects.reduce((groups, item)=>{   var groupFound= groups.find(arrItem => item.name === arrItem.name);   if(groupFound) {     groupFound.usedCount += item.usedCount;     if(groupFound.color.indexOf(item.color)  == -1) {  //去重       groupFound.color.push(item.color);     }   } else {     //不要直接在原来的对象修改,新建对象     var newGroup = {         name: item.name,         usedCount: item.usedCount,         color: [item.color]     }     groups.push(newGroup);   }   return groups; },[]); console.log(result);
  • 相关阅读:
    个性化推荐系统中的BadCase分析
    Hadoop优先级调度
    【剑指offer】斐波那契数列
    【剑指offer】旋转数组的最小数字
    【剑指offer】用两个栈实现队列
    【剑指offer】重建二叉树
    【剑指offer】从尾到头打印链表
    【剑指offer】替换空格
    【剑指offer】二维数组中的查找
    聚类算法项目整理
  • 原文地址:https://www.cnblogs.com/xiaomaotao/p/11170177.html
Copyright © 2011-2022 走看看