我有以下對象,我想總結相同成分名稱的值,如:番茄:5,雞:5,大米:1,豌豆:1,我有這個代碼,但沒有作出總和,而是顯示所有對象Javascript對象相同屬性鍵的總和值
var data3 = {
"menus": [{
"recipe": "chicken with rice",
"ingredients": [{
"name": "tomato",
"value": 2
}, {
"name": "chicken",
"value": 3
}, {
"name": "rice",
"value": 1
}]
}, {
"recipe": "Garden rice",
"ingredients": [{
"name": "tomato",
"value": 3
}, {
"name": "chicken",
"value": 2
}, {
"name": "peas",
"value": 1
}]
}]
};
var ingredients;
for (var i = 0; i < 10; i++) {
ingredients = data3.menus[i].ingredients;
var temp = {};
var obj = null;
for (var j = 0; j < ingredients.length; j++) {
obj = ingredients[j];
if (!temp[obj.name]) {
temp[obj.name] = obj;
} else {
temp[obj.name].value += obj.value;
}
}
var result = [];
for (var prop in temp)
result.push(temp[prop]);
console.log(result);
};
我會感謝您的幫助,謝謝!
的'+ = obj.value'行是一個你在哪裏和總結了如果對象已經存在於臨時對象中,則返回值。但是,每次迭代主對象中的食譜時,您的'temp'對象將被替換爲一個新對象'{}'。 嘗試移動'temp'變量以在初始化'ingredients'變量時對其進行初始化,並且您應該以每個對象的值的總和結束對象。 –