Я пытаюсь создать гибкую структуру слияния для массивов, используя 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
не работает эфир, потому что у меня нет информации о типе, только имя поля (которое может быть любым).
Есть ли какая-либо комбинация опций, которую я могу использовать, чтобы сделать это? Я не привязан к глубокому погружению, поэтому я открыт для других решений. Спасибо.