如何添加到现有的对象,知道关键,javascript



假设我有一个值为的数组

product: [{ 
'product_id': 247
'order_id': 4
}
{ 
'product_id': 245
'order_id': 3
}
{ 
'product_id': 247
'order_id': 3
}]

我有一个传递"product_id"one_answers"order_id"的按钮,每次按下按钮时,我都希望一个对象是这样的,相应地,在对象数组的末尾添加"product_id"。

[{4: [247, 247, 247], 3: [247, 245, 247]}]

我尝试过使用不同的阵列方法

var productarray = product
productarray.reduce((order, obj)=> {
let key = obj['order_id']
if (!order[key]) {
order[key] = []
}
order[key].push(obj.product_id);
})

但是我不能得到我想要的结果。如果这是一个模糊的问题,我很抱歉。提前谢谢。

似乎你需要按键折叠,但你的样本中有一些错误,这应该可以:

var products = [{
'product_id': 247,
'order_id': 4
},
{
'product_id': 245,
'order_id': 3
},
{
'product_id': 247,
'order_id': 3
}];
var orders = products.reduce((m, c) => {
var order = m[c.order_id];
if (order) {
order.push(c.product_id);
} else {
m[c.order_id] = [c.product_id];
}
return m;
}, {});
console.log(orders);

最新更新