Задать вопрос
@Mirrrta

Как правильно взять данные из объектов из массива?

Есть массив такого вида

[
{name: 'Иван', age: 10},
{name: 'Таня', age: 15},
{name: 'Саша', age: 20},
{name: 'Таня', age: 15},
]


Нужно получить на выходе 2 массива такого вида (без дубликатов)
[
{id: 1, name: 'Иван'},
{id: 2, name: 'Таня'},
{id: 3, name: 'Саша'},
]


[
{id: 1, age: '10'},
{id: 2, age: '15'},
{id: 3, age: '20'},
]


Заранее спасибо.
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const unique = Object.values(arr.reduce((acc, n) => (acc[n.name] = n, acc), {}));

const names = unique.map(({ name }, i) => ({ id: -~i, name }));
const ages = unique.map((n, i) => ({ id: i + 1, age: n.age }));

или

const extractUnique = (arr, idKey, keys) =>
  arr.reduce((acc, n) => {
    if (!acc[1].has(n[idKey])) {
      const id = acc[1].add(n[idKey]).size;
      keys.forEach((k, i) => acc[0][i].push({ id, [k]: n[k] }));
    }

    return acc;
  }, [ keys.map(() => []), new Set ])[0];


const [ names, ages ] = extractUnique(arr, 'name', [ 'name', 'age' ]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 дек. 2024, в 09:41
5000 руб./за проект
23 дек. 2024, в 09:39
1000000 руб./за проект