Angular - 返回不起作用的对象的差异

时间:2015-08-14 12:06:39

标签: javascript arrays angularjs

如何返回两个对象的差异?

$scope.a = [
   {name: "Lunchmeat"},
   {name: "Apple"},
   {name: "Bread"},
   {name: "Milk"},
   {name: "Mustard"},
   {name: "Cheese"}
];
$scope.b = [
   {name: "Bread"},
   {name: "Milk"},
   {name: "Mustard"},
   {name: "Cheese"}
]; 

$.grep($scope.a, function (el) {
        if ($.inArray($scope.b,el) == -1) console.log(el);//not working
  });

我正在寻找的输出是Object [{name: "Lunchmeat"},{name: "Apple"}],因为这是不同的。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

我正在使用underscore.js库及其功能差异:

  

" difference_.difference(array,* others)与without相似,但是   返回数组中不存在于另一个中的值   阵列。

     

_。差异([1,2,3,4,5],[5,2,10]);   => [1,3,4]"

在你的情况下,它将是:

$scope.someVar =_.difference($scope.a,$scope.b);

答案 1 :(得分:0)

您正在使用===(通过$.inArray)比较对象,对于不同的对象,它们始终为false,即使它们等效< / em> objects。

您需要遍历数组,查找是否找到具有相同name属性的对象而不是$.inArray调用。 ES5 +函数Array#some对此非常有用,ES6 +函数Array#find也是如此。 (两者都可以填充。)