一尘不染

Javascript算法查找数组中不在另一个数组中的元素

algorithm

我正在寻找一种好的算法来获取一个数组中的所有元素,而不是另一个数组中的元素。所以给定这些数组:

var x = ["a","b","c","t"];
var ​​​​​​​​​y = [​​​​​​​"d","a","t","e","g"];

我想结束此数组:

var z = ["d","e","g"];

我正在使用jquery,因此可以利用$.each()and的优势$.inArray()。这是我想出的解决方案,但似乎应该有一个更好的方法。

// goal is to get rid of values in y if they exist in x
var x = ["a","b","c","t"];
var y = ["d","a","t","e","g"];

var z = [];
$.each(y, function(idx, value){
  if ($.inArray(value,x) == -1) {
    z.push(value);
  }
});
​alert(z);  // should be ["d","e","g"]

这是运行中的代码。有任何想法吗?


阅读 1620

收藏
2020-07-28

共1个答案

一尘不染

var z = $.grep(y, function(el){return $.inArray(el, x) == -1});

同样,该方法名称也太短了。我希望它的意思是isElementInArray,而不是indexOf。

有关对象的演示,请参见http://jsfiddle.net/xBDz3/6/

2020-07-28