@krepkoii2

Как посчитать, сколько раз в массиве объектов встречаются свойства различных типов?

Есть массив такого плана:

[
    { id: 1, value: "test" },
    { id: 1, value: 3 },
    { id: 1, value: 2 },
    { id: 2, value: true },
    { id: 2, value: "test" },
]

Нужно из него получить такой:

[
    { id: 1, int: 2, string: 1 },
    { id: 2, boolean: 1, string: 1 }
]

То есть, сгруппировать по Id, добавить тип свойств и подсчитать их количество.

Пока что придумал только часть функции:

function transform(array) {
    let transformed = array.map(item => (
        {id: item.id, [typeof item.value]: 1}
    ))
   
    let uniqueIdArray = [...new Set(array.map(item => item.id))]

    let final = uniqueIdArray.map(item => {
       // А что тут лучше дописать, или может вообще не правильно мыслю?
    })
}
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values(arr.reduce((acc, { id, value }) => {
  const type = typeof value;
  acc[id] = acc[id] ?? { id };
  acc[id][type] = (acc[id][type] ?? 0) + 1;
  return acc;
}, {}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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