Перебрать и изменить массив с объектами js
По клику на товарах собирается массив корзины и выглядит как
Книги: Array(3)
0: {N: "Алгоритмы. Построение и анализ. Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн.", C: "158", P: "1", Q: 0}
1: {N: "Совершенный код. Стив Макконнелл.", C: "197", P: "99", Q: 0}
2: {N: "Алгоритмы. Построение и анализ. Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн.", C: "158",
P:
Мне нужно перебрать этот массив с объектами, и если я вижу, что в корзине два объекта например с одним названием, как в примере - нужно оставить один и изменить его свойство item[номер_оставляемого].Q - то есть количество
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
Понимаю, что моё решение совсем бредовое - но первое, что пришло в голову.
По крайней мере работает. )))
Было бы интересно посмотреть решение через filter, пока что-то не додумался.
let Arr1 = [{N: "Алгоритмы. Построение и анализ. Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн.", C: "158", P: "1", Q: 0},
{N: "Совершенный код. Стив Макконнелл.", C: "197", P: "99", Q: 0},
{N: "Алгоритмы. Построение и анализ. Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн.", C: "158", P: "99", Q: 0},
{N: "Алгоритмы. Построение и анализ. Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн.", C: "158", P: "99", Q: 0},
{N: "Совершенный код. Стив Макконнелл.", C: "197", P: "99", Q: 0}];
Arr1.forEach(function (c,d) {
let name = c.N;
for (let i=d+1;i<Arr1.length;i++){
if(name == Arr1[i].N){
c.Q += 1;
Arr1[i]="";
}
}
});
let result = [];
Arr1.forEach(function (e1) {
if(e1 != ""){
result.push(e1);
}
});
console.log(result);