javascript将一个对象的所有属性与其他对象进行比较
我有两个对象javascript将一个对象的所有属性与其他对象进行比较,javascript,lodash,Javascript,Lodash,我有两个对象A var A = { a: 1, b: 2, c: 3, d: { 0: { e: 4, f: 5 }, 1: { g: 6 } } }; var B = { a: 1, b: 9, c: 3, d: { 0: { e: 4,
A
var A = {
a: 1,
b: 2,
c: 3,
d: {
0: {
e: 4,
f: 5
},
1: {
g: 6
}
}
};
var B = {
a: 1,
b: 9,
c: 3,
d: {
0: {
e: 4,
f: 8
}
}
};
我想将B中的所有属性与A中的相应属性(如果存在)进行比较。如果它们的值不匹配,则返回
所以我想回去
b: 9,
d:{
0: {
f: 8
}
}
是否有一个简单的解决方案,以洛达斯的方式
编辑:我尝试了A和B的Object.keys,做了一个交集,然后比较每个键值。当我有嵌套属性时,它会失败。这里有一个基本函数,它使用lodash来检测简单嵌套对象和数组中的更改。它绝不是全面的,但它对简单的变更集很有效
function changes (a, b) {
if (_.isEqual(a, b)) {
return;
} else {
if (_.isArray(a) && _.isArray(b)) {
return _.reduce(b, function(array, value, index) {
value = changes(a[index], value);
if (!_.isUndefined(value)) {
array[index] = value;
}
return array;
}, []);
} else if (_.isObject(a) && _.isObject(b)) {
return _.reduce(b, function(object, value, key) {
value = changes(a[key], value);
if (!_.isUndefined(value)) {
object[key] = value;
}
return object;
}, {});
} else {
return b;
}
}
}
下面是一个实际应用的例子:请发布您已经使用的代码,以便其他人可以尝试提供帮助。