我想简单地从另一个数组中排除一些数组元素,并使用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]
答案 0 :(得分:6)
.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
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();