【问题标题】:Angular JS compare 2 objects and move non-matching key value pairs into new objectAngular JS比较2个对象并将不匹配的键值对移动到新对象中
【发布时间】:2014-11-06 15:13:24
【问题描述】:

您好,我只是想知道是否有一种简单的方法,或者当您知道键值对的顺序在两个对象中将相同时,是否有任何解释清楚的示例说明如何比较 2 个对象的角度.如果任何项目不同,只需将不同的项目移到新对象中即可。

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

如果有人知道一种快速简便的方法,那将有很大帮助。

谢谢

【问题讨论】:

  • 我相信你正在寻找一个深度对象差异工具,比如this

标签: javascript angularjs


【解决方案1】:

当您说您知道键的顺序时,这是否意味着您可以拥有它们的列表?如果是这样,您可以这样做:

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]);
  }
});

【讨论】:

  • 谢谢我用 obj[key] 方法想出了类似的东西:)
【解决方案2】:

比较两个相同对象的更改并将更改的键值对放入新对象。

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

            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 2018-03-23
    • 2023-03-10
    相关资源
    最近更新 更多