shakiriker
@shakiriker

Как объединить два объекта в один с одинаковыми именами свойств?

вот мой пример

const obj1 = {
  ok: {
    Duko: { d: { dd: "dd", ff: "ff" }, k: { dd: "dd" } }
    //...
  }
};

const obj2 = {
  ok: {
    Duko: { d: { dd: "dd", ff: "ff" }, k: { ff: "ff" } }
    //...
  }
};

// const obj3 = merge(obj1,obj2,...);

const obj3 = {
  ok: {
    Duko: {
      d: { dd: () => null, ff: () => null },
      k: { dd: "dd", ff: "ff" }
    }
    //...
  }
};


если оба объекта будут иметь одно и то же свойство с разным значением тогда значение должно быть ()=>null.

Функция может принимать сколько угодно объектов.

Hет никаких ограничений по свойствам объектов.

Как написать функцию merge ?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae Куратор тега JavaScript
Тлен
Воспользоваться уже написанной, и хорошо оттестированной: mergeWith.
Примерно так:
import { isObject, isUndefined, mergeWith } from 'lodash';

export function merge(...args) {
  return mergeWith(...args, (a, b) => {
    if(
      !(isObject(a) && isObject(b)) // хотя бы один не объект
      && !(isUndefined(a) || isUndefined(b)) // оба заданы
      && a !== b // не равны
    ) return () => null
  });
}
Возможно там потребуются ещё какие-то проверки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект