Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как суммировать значения свойств по значению свойства?

    skv1991
    @skv1991
    веб-программист, спортсмен
    Вариант на ES6 через функцию reduce, деструктуризацию объекта.
    // исходный массив
    const arr = [
      { name: 'Sasha', apple: 8, banana: 6, cherry: 9 },
      { name: 'Artur', apple: 4, banana: 2, cherry: 1 },
      { name: 'Sasha', apple: 5, banana: 7, cherry: 3 },
      { name: 'Bogdan', apple: 6, banana: 11, cherry: 8 },
      { name: 'Artur', apple: 8, banana: 6, cherry: 9 }
    ];
    
    // Собираем объект
    const result = arr.reduce((acc, current) => {
      
      // если текущее имя есть в свойствах объекта
      if (acc.hasOwnProperty(current.name)) {
        // извлекаем свойства
        const { apple, banana, cherry } = current;
        
        // суммируем количество
        acc[current.name].apple += apple;
        acc[current.name].banana += banana;
        acc[current.name].cherry += cherry;
      } else {
        // иначе добавляем новое имя в объект и копируем свойства
        const { apple, banana, cherry } = current;
        
        acc[current.name] = {
          apple,
          banana,
          cherry
        };
      }
      
      return acc;
    },
    {} // начальное значение
    );
    
    console.log(result);


    Пример на Codepen
    Ответ написан
    Комментировать