我有一个填充如下的javascript数组:
var orderDetails = [];
orderDetails.push({
City: "ABQ",
Banana: 5,
Mango:12
});
我正在浏览一系列城市。我希望能够查看这个数组,看看这个城市是否存在,如果存在,更新香蕉和芒果的数量。如果它不存在,我想将该城市的新城市和香蕉和芒果计数推入阵列。
有人能告诉我这是怎么做到的吗?注意:我使用的是服务器端javascript。
非常感谢。
答案 0 :(得分:2)
如果对象已经在您的数组中,您可以使用array.prototype.find
:
function update(arr, obj) {
var found = arr.find(o => o.City === obj.City);
if (found) {
found.Banana += obj.Banana;
found.Mango += obj.Mango;
} else {
arr.push(obj);
}
}
var orderDetails = [];
update(orderDetails, {City: "ABQ", Banana: 5, Mango:12});
update(orderDetails, {City: "XXX", Banana: 1, Mango:3});
update(orderDetails, {City: "ABQ", Banana: 5, Mango:12});
console.log(orderDetails);
答案 1 :(得分:0)
您可以在循环浏览城市列表时搜索城市。如果你找到它,你可以更新这两个值,否则你可以推送一个新对象。
cities.forEach(city => {
var found = orderDetails.find(detail => detail.City === city.name);
if (found) {
found.Banana += city.banana;
found.Mango += city.mango;
} else {
orderDetails.push({
City: city.name,
Banana: city.banana,
Mango: city.mango,
});
}
});