簡體   English   中英

獲取嵌套對象屬性的總數

[英]getting the total of a nested object property

我有一個如下所示的對象,如何從每個屬性中獲取 ca 的總值

var temp1 = {test1: {ca:1, ba:2, da: 3}, test2: {ca:1, ba:2, da: 3}, test3: { ba:2, da: 3}} 

有時 temp1 只能包含一個屬性作為 test1,所以為了滿足這種情況,我想找到對象的第一個屬性。 但是當 test2 test3 來時,我不能使用 0。此外,屬性 ca 可以存在與否。

temp1[Object.keys(temp1)[0]]

我試過了,我得到了輸出,但是我們可以改進這個嗎

 var arr = []
Object.keys(temp1).forEach(o => {
   Object.keys(temp1[o]).forEach(so => {
     if(so === "ca"){
       arr.push(temp1[o][so])
     }
  })
})

arr.reduce((a,b) => a + b)

預期輸出是

 var total = 2

您可以reduce()Object.values()你可以捕捉未定義的ca與像短路ca || 0 ca || 0 -- 如果它被另外定義,它將使用ca 0:

 var temp1 = {test1: {ca:1, ba:2, da: 3}, test2: {ca:1, ba:2, da: 3}, test3: { ba:2, da: 3}} let sum = Object.values(temp1).reduce((sum,{ca}) => sum + (ca || 0), 0) console.log(sum)

遍歷對象並檢查鍵是否存在。 如果是這樣,則將值添加到變量

 var temp1 = { test1: { ca: 1, ba: 2, da: 3 }, test2: { ca: 1, ba: 2, da: 3 }, test3: { ba: 2, da: 3 } } function valueOfKeyToGet(key) { let val = 0; for (let keys in temp1) { if (temp1[keys][key] !== undefined) { val += temp1[keys][key]; } } console.log(val) } valueOfKeyToGet('ca')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM