0

そのため、2 つの配列があり、array1 の数値として含まれていないすべての要素を array2 から削除したいと考えています (以下の配列の例でより明確になります)。

for ループと if ステートメントでうまくいくと思いますが、もっと洗練された解決策があると思います。

var elemsToKeep = [1, 3, 5, 6, 8];

var arr[0] = 'foo1';
var arr[1] = 'foo2';    // remove
var arr[2] = 'foo3';
var arr[3] = 'foo4';    // remove
var arr[4] = 'foo5';
var arr[5] = 'foo6';
var arr[6] = 'foo7';    // remove
var arr[7] = 'foo8';
var arr[8] = 'foo9';    // remove
var arr[9] = 'foo10';   // remove
4

3 に答える 3

3

不要な値を削除するのではなく、必要な値のみを使用して新しい配列を作成します。ヒント:ループとが含まれますArray.push

于 2012-12-30T21:56:51.213 に答える
2

おそらくフィルター (初めて使用するので、飛び出してjsfiddle.netを作成しました)

数値以外の文字を削除するように更新されていることに注意してください-つまり、1foo2は12になります-それが希望しない場合は、別の正規表現を適用できます。

var elemsToKeep = [1, 3, 5, 6, 8];

var arr=[];
arr[0] = 'one1';
arr[1] = 'two2';   // remove
arr[2] = 'three3';
arr[3] = 'four4';  // remove
arr[4] = 'five5';
arr[5] = 'six6';
arr[6] = 'seven7'; // remove
arr[7] = 'eight8';
arr[8] = 'nine9';  // remove
arr[9] = 'ten0';   // remove

function keep(element, index, array) {
  var num = parseInt(element.replace(/[^\d]/g,''),10); // any char!
  return elemsToKeep.indexOf(num) !=-1;
}

var filtered = arr.filter(keep);
alert(filtered)​
于 2012-12-30T21:58:28.300 に答える
1

Underscore の _reject 関数を使用できます。

var filtered = _reject(arr2, function(element, index) {
   return elementsToKeep.indexOf(index +1) == -1;
});
于 2012-12-30T22:08:47.827 に答える