1

パフォーマンスにあまり影響を与えずに、複数のアレイを繰り返しスプライスするための最速の方法は何ですか?以下の構文のようなものだと思いますが、うまくいきません。

やりたいこと:Array1- remove[0]、Array2- remove[1]、Array3-...remove[2]など...

for (var i = 0; i < items.length; i++) {
    arr[i] = items.name;
    for(key in arr[i]) {
        var value = arr[i].splice(i, 1);
        console.log(value);
    }
}

ここに画像の説明を入力してください

編集(アイテムの定義):

ここに画像の説明を入力してください

望ましい結果(それぞれ1番目、2番目、3番目のアイテムが削除された3つのアレイ:

[array0]
  [0] United Kingdom
  [1] United States

[array1]
  [0] Canada 
  [1] United States

[array2]
  [0] Canada
  [1] United Kingdom

EDIT2-次の比較を見ると、forループを使用して着信配列をグループにプッシュするかどうかがわかります。結果は、Coreyが提供するソリューションと同じですが、両方でスプライスメソッドを実行すると-結果は大きく異なります。例2は正しくスプライスされています。例1は完全にスプライスされているため、混乱しています。

(アイテムは次の形式で提供されます:)

["Canada", "United Kingdom", "United States"] 
["Canada", "United Kingdom", "United States"] 
["Canada", "United Kingdom", "United States"] 


var group = [];

for (var i = 0; i < items.length; i++) {
    group.push(items.name);
}

/*for (var i = 0; i < group.length; i++) {
   group[i].splice(i, 1);
}*/

console.log(group);

var arr1 = ["One", "Two", "Three"];
var arr2 = ["One", "Two", "Three"];
var arr3 = ["One", "Two", "Three"];

var test = [arr1, arr2, arr3];

/*for (var i = 0; i < test.length; i++) {
   test[i].splice(i, 1);
}*/

console.log(test);      
4

2 に答える 2

1

すべての配列が別の「グループ化された」配列にある場合は、グループを反復処理して、インデックスをスプライスカウンターとして使用できます。何かのようなもの:

var arr1 = ["One", "Two", "Three"];
var arr2 = ["One", "Two", "Three"];
var arr3 = ["One", "Two", "Three"];

var group = [arr1, arr2, arr3];

for (var i = 0; i<group.length; i++) {
   group[i].splice(i,1);
}

console.log(group);
// Logs: ["Two", "Three"], ["One", "Three"], ["One", "Two"]
于 2013-03-06T20:32:16.577 に答える
0

サードパーティのライブラリを使用してもかまわない場合、最も簡単な方法はUnderscore.jsを使用することです。選択的にスプライスするのか、それとも他の配列を結合した1つの配列を作成しようとしているのか、一意の値を使用して作成しようとしているのか、それとも何なのかわかりません。しかし、それらはすべてそれらのための操作を持っています:

http://underscorejs.org/#union

それらを持ち込みたくない場合は、ソースを見て、それらがどのように機能するかを確認してください。

于 2013-03-06T20:29:58.443 に答える