0

配列からアイテムを削除したいのですが、その後もすべてのアイテムに同じインデックスを付けたいと思います。

var arr:Array = new Array();
arr[1] = 'One';
arr[2] = 'Two';
arr[3] = 'Three';

arr.splice(2, 1);

for(var index in arr) {
    trace(index+':'+arr[index]);
}

出力:

1:One
2:Three

そして、出力する必要があります

1:One
3:Three

ここで私を少し助けてくれる人はいますか?:-)

4

3 に答える 3

0

問題の解決策を見つけました。

配列を使用する代わりに、オブジェクトを使用してアイテムを保持します。このような

var objArr = {1: 'One', 2: 'Two', 3: 'Three'};

そして、私が削除するとき、私はこれが好きです。

delete objArr[1];

その場合、配列関数を取得できないことはわかっています。しかし、私の場合、それらは必要ありません。

于 2012-09-06T11:32:00.910 に答える
0

配列から要素をスプライスすると、配列が更​​新され、そのインデックスの後の要素が移動されてそのインデックスが埋められます。

要素を常に同じインデックスに入れたい場合は、スプライシングするのではなく、インデックスに空の文字列を割り当ててください。

これを試して:

array[1] = "";

それ以外の、

array.splice(1, 1);

私によると、スプライシングは練習の良い方法です。

于 2012-09-06T08:16:06.347 に答える
0

削除演算子を使用できます:

var arr:Array = new Array();
arr[1] = 'One';
arr[2] = 'Two';
arr[3] = 'Three';

delete arr[2];

for(var index in arr) {
    trace(index+':'+arr[index]);
}
于 2012-09-06T08:29:10.250 に答える