Скажем, у меня есть массив вложенных объектов, таких как
let vendors = [
{
v_id: 'red',
count: 2,
},
{
v_id: 'blue',
count: 3,
},
{
v_id: 'green',
count: 1,
},
];
И еще один объект "foo" со многими свойствами, одним из которых является "v_id".
Основываясь на значении foo.v_id, я хочу либо обновить счетчики в массиве «vendors», либо добавить новый объект в «vendors».
Если foo.v_id совпадает с одним из значений в массиве vendors, соответствующий счет увеличивается на 1.
Пример:
let foo = {
user_type: 'Other',
v_id: 'blue'
};
Тогда «продавцами» станут:
[
{
v_id: 'red',
count: 2,
},
{
v_id: 'blue',
count: 4,
},
{
v_id: 'green',
count: 1,
},
];
Иначе, если нет совпадения с v_id, в массив "vendors" добавляется новый объект с соответствующим v_id & count = 1.
Пример:
let foo = {
user_type: 'client',
v_id: 'yellow',
};
Тогда "продавцами" станут:
[
{
v_id: 'red',
count: 2,
},
{
v_id: 'blue',
count: 3,
},
{
v_id: 'green',
count: 1,
},
{
v_id: 'yellow',
count: 1,
},
];
Как я могу эффективно и элегантно сделать это в Javascript? Я знаю, что могу использовать .filter()
, чтобы получить конкретный объект в "vendors", который нужно обновить, но как мне обновить сам массив "vendors"?