2017-01-25 86 views
-4

取對象,包含多個對象。這些對象可以有一個名爲number的特定鍵,其值是一個數字。 哪有我除了所有的「數字」有對象的價值這一關鍵number ...javascript:如何增加不同對象的特定鍵的值

var myObject = { 
    item1 = { 
     name: "someName", 
     color: "someColor2", 
     number: intValue 
    }, 
    item2 = { 
     name: "someName2", 
     color: "someColor2" 
    }, 
    item3 = { 
     name: "someName3", 
     color: "someColor3", 
     number: intValue 
    }, 
    item4 = { 
     name: "someName4", 
     color: "someColor4" 
    }, 
}; 
+2

你嘗試過什麼嗎? –

+0

遍歷對象並訪問他們的'number'屬性並對它們進行求和。 – Li357

+0

只需循環遍歷每個對象,檢查它是否具有'number'屬性,如果是,則將其添加到總和中。谷歌是你的朋友 – qxz

回答

0
var sum = 0; 

for (var prop in myObject) 
{ 
    sum += myObject[prop].number || 0; 
} 

可能的東西 ....

+0

你好,謝謝你的回答。我嘗試了你的建議,但不能成功。我也試圖如果(item.hasOwnProperty('數字'))但總和保持爲0. – user1859295

+0

我現在編輯我的問題..希望可以幫助 – ymz

0

這是一個開始是一個完美的使用案例Array.reduce!但是,由於您的輸入是對象而不是數組,我們需要使用Object.keys來獲取項目名稱列表,然後列表將驅動reducer循環。

// your object def wasn't valid, so I made my own 
var myObject = { 
    item1: { name: 'item one', color: 'red', number: 1 }, 
    item2: { name: 'item two', color: 'orange', number: 2 }, 
    item3: { name: 'item three', color: 'yellow', number: 3 }, 
    item4: { name: 'item four', color: 'green', number: 4 }, 
    item5: { name: 'item five', color: 'blue', number: 5 }, 
    item6: { name: 'item six', color: 'indigo', number: 6 }, 
    item7: { name: 'item seven', color: 'violet', number: 7 } 
}; 

var total = Object.keys(myObject) //=> ['item1', 'item2', 'item3', 'item4', ...] 
.reduce(function(sum, itemName) { 
    return sum += myObject[itemName].number; 
}, 0); 
相關問題