Javascript:检查两个对象的差异(内部)

时间:2015-11-13 08:51:33

标签: javascript arrays angularjs

如果两个对象不相等,我会使用这样的代码进行检查。

(我正在创建补丁查询字符串):

    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"}}

它不起作用

为什么它没有使用内部对象键?

0 个答案:

没有答案