Перебрать и изменить массив с объектами 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);

→ Ссылка