如何返回两个对象的差异?
$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"}]
,因为这是不同的。
有人可以帮忙吗?
答案 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
也是如此。 (两者都可以填充。)