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
                    })
                 }
          })
    }        
  • 相关阅读:
    Centos 安装git
    mybatis 整合redis作为二级缓存
    jedis 连接池工具类
    IE8下使用asp.net core mvc+jquery ajaxSubmit问题
    .net core mvc部署到IIS导出Word 提示80070005拒绝访问
    IdentityServer4在Asp.Net Core中的应用(三)
    理解OpenID和OAuth的区别
    IdentityServer4在Asp.Net Core中的应用(二)
    使用Bind读取配置到C#的实例
    IdentityServer4在Asp.Net Core中的应用(一)
  • 原文地址:https://www.cnblogs.com/nimon-hugo/p/13720674.html
Copyright © 2011-2022 走看看