在jquery中比较数组并返回不相同的值

时间:2014-06-11 22:59:30

标签: javascript jquery arrays

我想在jquery中比较两个数组,并返回一个不匹配的所有元素的新数组。所以如果我构建一个这样的函数:

function (parent, child) {}

我应该将childparent进行比较,并返回子节点中与父节点不匹配的所有元素的新数组。一个例子是

parent = ['apple', 'banana'];
child = ['fruit'];

将子级与父级进行比较并返回数组:['fruit'],因为fruit不在父级中。我寻找方法来做到这一点并看到this solution,但我不确定这是否是我想要的。

2 个答案:

答案 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']