我想在jquery中比较两个数组,并返回一个不匹配的所有元素的新数组。所以如果我构建一个这样的函数:
function (parent, child) {}
我应该将child
与parent
进行比较,并返回子节点中与父节点不匹配的所有元素的新数组。一个例子是
parent = ['apple', 'banana'];
child = ['fruit'];
将子级与父级进行比较并返回数组:['fruit']
,因为fruit
不在父级中。我寻找方法来做到这一点并看到this solution,但我不确定这是否是我想要的。
答案 0 :(得分:2)
你可能想看看Underscore.js(http://underscorejs.org/#difference),它有一个功能。它返回数组中不存在于其他数组中的值。
_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
=> [1, 3, 4]
为了证明使用另一个库:你可能会在那里找到大量其他有用的实用工具;)
答案 1 :(得分:1)
请注意,使用关键字' parent'可能有意想不到的副作用。在我使用的Chrome版本中,它似乎是指Window。
Vanilla JavaScript解决方案,快速简便:
var findDifference = function (elder, sibling) {
var difference = [];
for(var i = 0; i < sibling.length; i++){
if(elder.indexOf(sibling[i]) < 0){
difference.push(sibling[i]);
}
}
return difference;
};
var elder = ['apple', 'banana'];
var sibling = ['fruit'];
findDifference(elder, sibling); // => ['fruit']