我正在处理一个API,该API在几个不同的更新消息中返回一个复杂的对象。我发现JQuery的extend(true,objA,objB)函数在将更新合并在一起方面做得很好,但有一个例外:当属性是数组时,它会替换数组而不是连接。
所以我有这样的对象:
{thing:{stuff:{whatsit:{foo:[1,2,3]}}}}}
{thing:{stuff:{whatsit:{foo:[3,4,5,6]}}}}}
在合并对象时是否存在将提供此结果的现有NPM包或其他库:
{thing:{stuff:{whatsit:{foo:[1,2,3,3,4,5,6]}}}}}
答案 0 :(得分:1)
lodash是个不错的选择。您可以为您的案例使用_.mergeWith函数。 来自lodash api指南的例子
function customizer(objValue, srcValue) {
if (_.isArray(objValue)) {
return objValue.concat(srcValue);
}
}
var object = { 'a': [1], 'b': [2] };
var other = { 'a': [3], 'b': [4] };
_.mergeWith(object, other, customizer);
// => { 'a': [1, 3], 'b': [2, 4] }