如何把一個數組中的對象的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
                })
             }
      })
}        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM