Слияние свойств с различными типами с использованием deepmerge.js - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь создать гибкую структуру слияния для массивов, используя deepmerge , аналогично mongodb, где я могу передать объект, который сообщает, какой тип слияния должен выполнять массив.

Идея состоит в том, чтобы иметь что-то вроде этого:

let a = {
   foo: [1, 2, 3]
};

let b = {
   foo: [4, 5, 6]
}

deepmerge(a, b, someOptions);
// would result { foo: [4, 5, 6] }

let c = {
   foo: { $push: [4, 5, 6] }
}

deepmerge(a, b, someOptions);
// would result { foo: [1, 2, 3, 4, 5, 6] }

Точно так же я мог бы использовать, например, $unshift.

Дело в том, что я не мог понять, какие someOptions я могу передать, чтобы это произошло.

arrayMerge не работает, потому что он никогда не вызывается для второго foo, поскольку это не массив. customMerge не работает эфир, потому что у меня нет информации о типе, только имя поля (которое может быть любым).

Есть ли какая-либо комбинация опций, которую я могу использовать, чтобы сделать это? Я не привязан к глубокому погружению, поэтому я открыт для других решений. Спасибо.

1 Ответ

0 голосов
/ 08 июля 2019

Так что я не нашел ответа в течение недели, поэтому мне пришлось самому создавать библиотеку, хахахах

Я назвал это deepmerge-json (да, я знаю, я "лучший" с именами) и это доступно на npm .Это просто простое глубокое слияние с некоторыми функциями слияния массивов.Любые предложения будут приветствоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...