在jQuery中从数组中排除数组

时间:2012-08-16 15:32:47

标签: jquery

我想简单地从另一个数组中排除一些数组元素,并使用js和jQuery获取结果。我发现自己做了一个双.each()循环......

var exclude = new Array();
exclude = [1,2,3,4];
var original = new Array();
original = [0,1,2,3,4,5,6,7,8];
var finalarray = excludearrayfunction(original, exclude); // [0,5,6,7,8]

6 个答案:

答案 0 :(得分:6)

jQuery .not()方法

您可以使用jQuery .not方法从集合中排除项目,如下所示:

var exclude = [1,2,3,4];
var original = [0,1,2,3,4,5,6,7,8];
var result = $(original).not(exclude);

这将返回一个jQuery对象,以我们可以简单地选择结果:

var finalArray = result.get();
// result: 0,5,6,7,8

jsFiddle demo

完整

var exclude = [1,2,3,4];
var original = [0,1,2,3,4,5,6,7,8];
var finalArray = $(original).not(exclude).get();

答案 1 :(得分:3)

var exclude = [1,2,3,4];
var original = [0,1,2,3,4,5,6,7,8];
var finalarray = $.grep(original,function(el,i) {
  return !~$.inArray(el,exclude);
});

!~是查看值是否等于-1的快捷方式,如果$ .inArray(el,exclude)返回-1,则表示原始数组中的值不在排除数组中,所以你保留它。

答案 2 :(得分:1)

你不需要jQuery,这对于perf来说更好。

finalArray = [];
orig = [0,1,2,3,4,5,6,7,8];
exclude = [1,2,3,4];

orig.forEach(function(x) { if (exclude[x] === undefined) { finalArray.push(x) }}); 
//[0,5,6,7,8] 

答案 3 :(得分:0)

function excludearrayfunction(original, exclude) {
  var temp = [];
  $.each(original, function(i, val) {
      if( $.inArray( val, exclude) != -1 ) {
        temp.push(val);
      }
  });
  return temp;
}

function excludearrayfunction(original, exclude) {
   return $.grep(original, function(i, val) {
      return $.inArray(exclude, val) != -1;
   })
}

答案 4 :(得分:0)

Array.prototype.difference = function(arr) {
    return this.filter(function(i) {return arr.indexOf(i) < 0; });
};

答案 5 :(得分:0)

使用jQuery的.not。你可以找到它here

var original = [1,2,3];
var exclude = [1,2];

var tempArr = $(original).not(exclude);


var finalArray = tempArr .get();