我有两个对象:
var one = {
addedItems: [0, 1],
removedItems: [8, 9],
oneTwo: false,
someStuff: {
anotherArray: ['a', 'b']
}
};
var two = {
addedItems: [3, 4],
removedItems: [6, 7],
someStuff: {
anotherArray: ['c', 'd']
}
};
最后我需要合并这两个对象并得到类似这样的东西:
{
addedItems: [0, 1, 3, 4],
removedItems: [8, 9, 6, 7],
oneTwo: false,
someStuff: {
anotherArray: ['a', 'b', 'c', 'd']
}
}
操作应该在不同结构的对象上执行。
做到这一点的最佳方式(或可能的方式)是什么? jQuery 或 underscore/lodash 中是否有允许执行此操作的方法?
最佳答案
您是否检查了 Lodash _.mergeWith(object, sources, customizer)
方法?我认为该示例基本符合您的预期。
https://lodash.com/docs/4.17.15#mergeWith
var one = { addedItems: [0, 1], removedItems: [8, 9], oneTwo: false, someStuff: { anotherArray: ['a', 'b'] } },
two = { addedItems: [3, 4], removedItems: [6, 7], someStuff: { anotherArray: ['c', 'd'] } };
// In case of arrays, concatenate them instead
function customizer(objValue, srcValue) {
if (_.isArray(objValue)) {
return objValue.concat(srcValue);
}
}
var result = _.mergeWith(one, two, customizer);
关于javascript - 如何在 JavaScript 中连接两个具有数组属性的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650641/