【发布时间】:2018-08-09 02:59:10
【问题描述】:
我有一个产品对象数组,其中包括几个产品详细信息。
var bags = [
{ product_id: 1 , product_name: "product 1" , quantity: 1 },
{ product_id: 2 , product_name: "product 3" , quantity: 1 },
{ product_id: 3 , product_name: "product 2" , quantity: 1 }
];
我可以像这样在这里推送新数组,
bags.push({ product_id: 4 , product_name: "product 4" , quantity: 1 });
现在我需要在这个数组中推送一个新对象时,如果该新对象的 product_id 已经存在,那么在已经存在的产品数量上,而不是添加新项目。
假设我将此对象添加到先前已存在于数组中的bags 数组中。
{ product_id: 1 , product_name: "product 1" , quantity: 3 }
现在我不需要创建新项目,而是需要我的 bags 数组看起来像这样
var bags = [
{ product_id: 1 , product_name: "product 1" , quantity: 4 }, // <- updated
{ product_id: 2 , product_name: "product 3" , quantity: 1 },
{ product_id: 3 , product_name: "product 2" , quantity: 1 }
];
【问题讨论】:
-
我可以知道您的主键以进行比较吗? product_id 还是 product_name?
-
遍历列表,如果找到 productId 添加数量,如果没有,则将对象添加到列表中。为此目的,也许它会更好地使用另一种结构,例如以 productId 为键,其余为值的字典
-
@kai 是的,
product_id是这里比较的主要关键 -
迭代 3 个产品的列表是可以的,但如果你有成千上万个产品会发生什么?
-
它是如何重复的?因为从我的角度来看,这是完全不同的问题。
标签: javascript arrays