Как объединить 2 объекта и исключить совпадения?

Имеется 2 объекта:
let a = {"0": 1, "1": 2, "2": 3};
let b = {"0": 4, "1": 5, "2": 1};

Как объединить и исключить одинаковые значения?
Нужный результат:
{"0": 1, "1": 2, "2": 3, "3": 4, "4": 5};
  • Вопрос задан
  • 130 просмотров
Решения вопроса 2
Seasle
@Seasle Куратор тега JavaScript
Судя по примеру:
const merge = (a, b) => {
  const combined = new Set([...Object.values(a), ...Object.values(b)]);
  
  return Object.fromEntries(
    [...combined.values()].map((value, index) => [index, value])
  );
};

merge(
  { "0": 1, "1": 2, "2": 3 },
  { "0": 4, "1": 5, "2": 1 }
);
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Получить массив уникальных значений, потом из него сделать объект с ключами из индексов.
const crazyJoin = (a, b) => Object.values(b)
  .reduce((acc, c) => !!~acc.indexOf(c) ? acc : (acc.push(c), acc), Object.values(a))
  .reduce((acc, c, i) => (acc[i] = c, acc), {});

crazyJoin(a, b) // {"0":1,"1":2,"2":3,"3":4,"4":5}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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