Angular JS比较2个对象并将非匹配的键值对移动到新对象中

时间:2014-09-12 12:25:15

标签: javascript angularjs

嗨我只是想知道是否有一个简单的方法,或者如果你知道两个对象中的键值对的顺序是相同的,如何在角度中比较两个对象有任何很好解释的例子。如果任何项目不同,只需将不同的项目移动到新对象中即可。

我知道有angular.equals(obj1, obj2)之类的东西会返回一个布尔值。然而,如果两个对象不同,我会感兴趣的是取对并将它们放在一个新对象中。

如果有人知道这样做的快捷方式,那将会有很大的帮助。

谢谢

2 个答案:

答案 0 :(得分:1)

比较两个相同的对象以进行更改,并将更改的键值对放入新对象中。

$scope.individualItemsToUpdate = {};
        angular.forEach($scope.objectWithChanges, function (value, key) {
            if (value != $scope.originalObject[key]) {
                $scope.individualItemsToUpdate[key] = value;

            }
        });

答案 1 :(得分:0)

当你说你知道按键的顺序时,这意味着你可以有一个列表吗?如果是这样,你可以这样做:

var keys = ['val1', 'val2', 'val3'],
    difference = {};

keys.map(function(key){
  if (obj1[key] && !obj2[key]) {
    difference.push(obj1[key]);
  } else if (obj1[key] && !obj2[key]) {
    difference.push(obj1[key]);
  }
});