在jQuery中从数组中排除数组

在jQuery中从数组中排除数组,jquery,Jquery,我只想从另一个数组中排除一些数组元素,并使用js和jQuery获得结果。我发现自己在做一个双循环。每个()循环 或 ~是查看值是否等于-1的快捷方式,如果$.inArray(el,exclude)返回-1,则您知道原始数组中的值不在exclude数组中,因此可以保留它。jQuery方法 可以使用jQuery方法从集合中排除项,如下所示: var exclude = [1,2,3,4]; var original = [0,1,2,3,4,5,6,7,8]; var result = $(orig

我只想从另一个数组中排除一些数组元素,并使用js和jQuery获得结果。我发现自己在做一个双循环。每个()循环

~
是查看值是否等于-1的快捷方式,如果$.inArray(el,exclude)返回-1,则您知道原始数组中的值不在exclude数组中,因此可以保留它。

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

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
完成
Array.prototype.difference=函数(arr){
返回this.filter(函数(i){return arr.indexOf(i)<0;});
};

您不需要jQuery来实现这一点,而它更适合于性能

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] 

使用jQuery的
。而不是
。你可以找到它


修改本机对象原型的可能重复通常并不理想。
~
是一个按位not运算符,它接受一个值并翻转每个二进制位。我们可以在这样的特殊情况下使用它,因为只有
~-1
返回
0
,并且
!0==true,所以写
~(x) 
(x)=-1
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);
});
var exclude = [1,2,3,4];
var original = [0,1,2,3,4,5,6,7,8];
var result = $(original).not(exclude);
var finalArray = result.get();
// result: 0,5,6,7,8
var exclude = [1,2,3,4];
var original = [0,1,2,3,4,5,6,7,8];
var finalArray = $(original).not(exclude).get();
Array.prototype.difference = function(arr) {
    return this.filter(function(i) {return arr.indexOf(i) < 0; });
};
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] 
var original = [1,2,3];
var exclude = [1,2];

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


var finalArray = tempArr .get();