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

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デモ

完了

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は必要ありませんが、パフォーマンスには優れています。

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

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 に答える
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 に答える