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

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

Дан массив объектов:

[
  { name: "Dill", surname: "Jones", age: 25 },
  { name: "Dill", surname: "Clint", age: 25 },
  { name: "Dill", surname: "Gomes", age: 25 },
]

У объектов есть одинаковые ключи с одинаковыми значениями.
Задача: собрать объект, который будет содержать только одинаковые значения, в данном примере это выглядело бы так:

{ name: "Dill", surname: null, age: 25 }
  • Вопрос задан
  • 437 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const obj = Object.fromEntries(Object
  .entries(arr
    .flatMap(Object.entries)
    .reduce((acc, n) => ((acc[n[0]] ??= new Set).add(n[1]), acc), {}))
  .map(([ k, v ]) => [ k, v.size === 1 ? [...v][0] : null ])
);

или

const obj = arr.reduce((acc, n) => (
  Object.keys(n).forEach(k => {
    acc[k] = Object.hasOwn(acc, k) && n[k] !== acc[k] ? null : n[k];
  }),
  acc
), {});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы