zoukankan      html  css  js  c++  java
  • 如何把一个数组中的对象的key值相等的对象合成一个对象

     比如这样一个数组:[{category:"中国梦",value:"10000"},{category:"有国才有家",value:"1000"},{category:"中国梦",value:"1000"}];把category相同或相等的值的对象中的value相加组合成一个对象;

           在面试中,有时候面试官会这样问,“有这样一个数组,数组由对象组成,对象中有两个key/value键值对,这样的对象有若干个,其中有些key值是相等的,请问,如何把这些key值相等的对象提取出来呢”。

          在项目中,有时候会遇到一个dataList数组数据,组成该数组的元素是一个对象,对象中的某些key值是相等的,下面有个场景:做一个饼状图,需要把数据中key值相等的对象中的某个数值相加。

    上面所描述的两个场景大同小异,其实现的原理也是一样的:定义一个空数组,和一个空对象,还有一个初始值等于0的index索引,在dataList数组循环体中,对空对象中作个判断,判断是否有数组红的对象下的某个key的值,有,则执行某个数值相加的操作,没有,则把该对象push进上面定义的空数组里面(比较抽象可以忽略直接阅读代码);

    实现代码如下:

    let dataList=[{category:"中国梦",value:"10000"},{category:"有国才有家",value:"1000"},{category:"中国梦",value:"1000"}];
    
    console.log(handle(dataList));
    
    function handle(dataList){
         let res=[],
              obj={},
              index=0;
          arr.forEach(item=>{
                if(obj.hasOwnProperty(item.category)){
                   res[obj[item.category]].value=res[obj[item.category]].value+item.value;
                }else{
    
                    obj[item.category]=index++;
                    res.push({
                        category:item.category,
                        value:item.valuw
                    })
                 }
          })
    }        
  • 相关阅读:
    OpenJudge 3765(最大权闭合图,最小割
    多校8-1010 HDU5389 (dp
    570D Codeforces Round #316 (Div. 2) D(dfs序,时间戳,二分
    CodeForces
    hiho一下!
    HDU 4123(树上任意点到其他点的最远距离,rmq
    Oracle创建索引;查询索引
    HBase启动和停止命令
    flink dom4j冲突异常
    flink checkpoint状态储存三种方式选择
  • 原文地址:https://www.cnblogs.com/nimon-hugo/p/13720674.html
Copyright © 2011-2022 走看看