亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

簡化嵌套對象并查找特定屬性的總和

簡化嵌套對象并查找特定屬性的總和

慕容森 2022-09-02 10:25:40
我有一個嵌套的對象,如下所示。我想將嵌套對象簡化為一個對象,并查找特定父對象的所有子級的特定屬性的總和。當前對象let obj = {Myanmar: [    {        trk1: {            mou: 0.0,            ca: 1.0,            ccs: 0.0,            ccc: 0.0,        },    }],Gibraltar: [    {        trk1: {            mou: 12.850000381469727,            ca: 1.0,            ccs: 1.0,            ccc: 3.0,        },    }],Cyprus: [    {        trk1: {            mou: 36.25,            ca: 3.0,            ccs: 2.0,            ccc: 7.0,        },        trk2: {            mou: 27.299999237060547,            ca: 1.0,            ccs: 1.0,            ccc: 6.0,        },        trk3: {            mou: 80.59999752044678,            ca: 4.0,            ccs: 4.0,            ccc: 14.0,        },        trk4: {            mou: 26.716670513153076,            ca: 4.0,            ccs: 4.0,            ccc: 6.0,        }    }]};預期對象{Myanmar: {    mou: "(trk1-mou+trk2-mou+trk3-mou)",    ca: "(trk1-ca+trk2-ca+trk3-ca)"}};我想對嵌套對象執行屬性的總和。我無法繼續后得到對象.鍵請幫助.
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

我不確定這是否是你想要的:


var obj={"Myanmar": [{ "trk1": { "mou": 0.0, "ca": 1.0, "ccs": 0.0, "ccc": 0.0 }}],"Gibraltar": [{ "trk1": { "mou": 12.850000381469727, "ca": 1.0, "ccs": 1.0, "ccc": 3.0 }}],"Cyprus": [{ "trk1": { "mou": 36.25, "ca": 3.0, "ccs": 2.0, "ccc": 7.0 }, "trk2": { "mou": 27.299999237060547, "ca": 1.0, "ccs": 1.0, "ccc": 6.0 }, "trk3": { "mou": 80.59999752044678, "ca": 4.0, "ccs": 4.0, "ccc": 14.0 }, "trk4": { "mou": 26.716670513153076, "ca": 4.0, "ccs": 4.0, "ccc": 6.0 }}]}


result = Object.entries(obj).reduce((acc, [k,v])=>{

 acc[k] = acc[k] || {};

 Object.entries(v[0]).forEach(([_, country])=>{

 for(let [key, value] of Object.entries(country)){

     acc[k][key] = acc[k][key] || 0;

     acc[k][key] += value;

   }

 })

 return acc;

},{});



console.log(result);


查看完整回答
反對 回復 2022-09-02
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

var obj={"Myanmar": [{ "trk1": { "mou": 0.0, "ca": 1.0, "ccs": 0.0, "ccc": 0.0 }}],"Gibraltar": [{ "trk1": { "mou": 12.850000381469727, "ca": 1.0, "ccs": 1.0, "ccc": 3.0 }}],"Cyprus": [{ "trk1": { "mou": 36.25, "ca": 3.0, "ccs": 2.0, "ccc": 7.0 }, "trk2": { "mou": 27.299999237060547, "ca": 1.0, "ccs": 1.0, "ccc": 6.0 }, "trk3": { "mou": 80.59999752044678, "ca": 4.0, "ccs": 4.0, "ccc": 14.0 }, "trk4": { "mou": 26.716670513153076, "ca": 4.0, "ccs": 4.0, "ccc": 6.0 }}]}


let reqObj={};

let arr = Object.keys(obj);

for(var i=0;i<=arr.length-1;i++){

 let inObj = obj[arr[i]][0];

 reqObj[arr[i]] = Object.keys(inObj).reduce((acc,ele,index)=>{

     let keyArr = Object.keys(inObj[ele]);

     for(var j=0;j<=keyArr.length-1;j++){

       acc = {...acc,...{[keyArr[j]] : (keyArr[j] in acc)   ? acc[keyArr[j]] + inObj[ele][keyArr[j]]   : inObj[ele][keyArr[j]]}}

     }

     return acc;

  },{})

}

  console.log(reqObj)


查看完整回答
反對 回復 2022-09-02
  • 2 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號