如果两个对象不相等,我会使用这样的代码进行检查。
(我正在创建补丁查询字符串):
var concatUnique = function(a, b) {
if (b.length === 0) return a;
return a.indexOf(b[0]) === -1 ? concatUnique(a.concat(b[0]), b.slice(1)) : concatUnique(a, b.slice(1));
};
var diffObject = function(a, b) {
return concatUnique(Object.keys(a), Object.keys(b)).reduce(function(map, k) {
if (a[k] !== b[k]){
if (angular.isArray(b[k])){
if (a[k].toString() !== b[k].toString()){
map[k] = b[k];
}
}
else{
map[k] = b[k];
}
}
return map;
}, {});
};
var compareTwoObjects = function(initialObj, editedObj) {
var result = diffObject(initialObj, editedObj);
return JSON.stringify(result);
};
但我有一个案例:
例如我有两个对象:
{a: "1", b: "2", sub: {"1", "2"}}
&安培;
{a: "1", b: "2", sub: {"1", "3"}}
我的代码可以使用,但是!
如果我有这样的对象:
{a: "1", b: "2", sub: {c: "1", d: "2"}}
&
{a: "1", b: "2", sub: {c: "1", d: "3"}}
它不起作用
为什么它没有使用内部对象键?