2

我想简单地从另一个数组中排除一些数组元素并使用 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]
4

6 回答 6

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

jsFiddle 演示

完全的

var exclude = [1,2,3,4];
var original = [0,1,2,3,4,5,6,7,8];
var finalArray = $(original).not(exclude).get();
于 2012-08-16T15:37:14.067 回答
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,则您知道原始数组中的值不在排除数组中,因此您保留它。

于 2012-08-16T15:36:16.157 回答
1
Array.prototype.difference = function(arr) {
    return this.filter(function(i) {return arr.indexOf(i) < 0; });
};
于 2012-08-16T15:38:01.103 回答
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] 
于 2012-08-16T15:38:43.173 回答
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;
   })
}
于 2012-08-16T15:35:34.943 回答
0

使用 jQuery 的.not. 你可以在这里找到它。

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

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


var finalArray = tempArr .get();
于 2012-08-16T15:43:54.203 回答