Nolis
@Nolis
it-гопник

Как сосчитать количество повторений в массиве объектов?

Есть массив с объектами следующего вида:
6024e5e150eaf027207951.png
Надо получить новый массив, где повторяющиеся элементы будут заменены на один, дополненный свойством, содержащим количество повторений. Т.е, было [{ name: "cat" }, { name: "cat" }], стало [{ name: "cat", count: 2 }].
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Только вот не для фронта эта задача.
const result = {};
const arr = [{ name: "cat" }, { name: "cat" }];

arr.forEach(function(item){
  if(result[item.name]) {
    result[item.name].count += 1;
  } else {
    result[item.name] = {...item, count: 1};
  }
})

console.log(result) // { cat: { name: 'cat', count: 2 } }
console.log(Object.values(result)) // [{ name: "cat", count: 2 }]
console.log(arr) // [{ name: "cat" }, { name: "cat" }];
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values(arr.reduce((acc, n) => {
  (acc[n.name] ||= ({ ...n, count: 0 })).count++;
  return acc;
}, {}))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Могилев
от 2 800 до 3 300 $
01 мар. 2021, в 00:47
300000 руб./за проект
01 мар. 2021, в 00:29
5555 руб./за проект