@yevkov

Как узнать количество одинаковых значений в массиве объектов?

Дан массив объектов вида
[{a: 1, b: 2, c: 3}, {a: 1, b: 4, c: 3}]
Нужно узнать количество повторений каждого значения

Т.е на выходе

a = 2;
b = 1;
c = 2;
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
@StockholmSyndrome
Object.entries(data.reduce((acc, curr) => {
  for (let key in curr) {
    acc[key] = acc[key] || {values: [curr[key]], count: 0};
    if (acc[key].values.includes(curr[key])) {
      acc[key].count++;
    } else {
      acc[key].values.push(curr[key]);
    }
  }
  return acc;
}, {})).reduce((acc, [key, {count}]) => ((acc[key] = count), acc), {});

или так
data.reduce((acc, curr) => {
  for (let key in curr) {
    let item = acc.find((item) => item.key === key);
    if (!item) {
      item = {key, values: [curr[key]], count: 0};
      acc.push(item);
    }
    if (item.values.includes(curr[key])) {
      item.count++;
    } else {
      item.values.push(curr[key]);
    }
  }
  return acc;
}, []).reduce((acc, {key, count}) => ((acc[key] = count), acc), {});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы