-2

を使用して配列から最初の 4 つのインデックスを削除し、splice()インデックス 0 から始まる配列を再構築したいのですが、どうすればよいですか?

Array.index[0] = 'one';
Array.index[1] = 'two';
Array.index[2] = 'three';
Array.index[3] = 'four';
Array.index[4] = 'five';
Array.index[5] = 'six';
Array.index[6] = 'seven';
Array.index[7] = 'eight';

Array.splice(0, 4);

Array.index[0] = 'five';
Array.index[1] = 'six';
Array.index[2] = 'seven';
Array.index[3] = 'eight';

タイマーを介して配列にアクセスしています。反復ごとに、配列の最初の 4 つのインデックスを削除したいと考えています。splice()インデックスを削除してから、0 インデックスから始まる配列を再構築すると仮定しました。そうではないので、代わりに「deleteIndex」変数を作成し、反復ごとに +4 を deleteIndex に追加します。

var deleteIndex:int = 4;
function updateTimer(event:TimerEvent):void
{
    Array.splice(0,deleteIndex);
    deleteIndex = deleteIndex + 4;
}
4

3 に答える 3

3

あなたが示したコードの「配列」はどのタイプのオブジェクトですか? Flash Arrayオブジェクトには、「index」という名前のプロパティがありません。Array クラスは ですdynamic。これは、実行時にランダムなプロパティを追加できることを意味します (これはあなたがしていることのようです)。

いずれにしても、標準の Flash Array クラスを使用している場合は、そのsplice()メソッドが配列インデックスを自動的に更新します。これを証明するコード例を次に示します。

var a:Array = [1,2,3,4,5];
trace("third element: ", a[2]); // output: 3
a.splice(2,1); // delete 3rd element
trace(a); // output: 1,2,4,5
trace(a.length); // ouput: 4
trace("third element: ", a[2]); // output: 4
于 2012-12-17T21:26:45.657 に答える
1

あなたが何を望んでいるかを正しく理解している場合は、Array の unshift メソッドを使用する必要があります。

例 :

var someArray:Array = new Array(0,1,2,3,4,5,6,7,8);
someArray.splice(0,4);
somearray.unshift(5,6,7,8);

また、配列クラスを不適切に使用しているため、最初に操作する配列のインスタンスを作成する必要があります。

配列のインスタンスの代わりに Array クラス名を使用したため、この質問は紛らわしいです。しかし、この投稿のコメンターが言ったように、要素をつなぎ合わせると、自動的にインデックスが再作成されます。

于 2012-12-17T21:29:30.233 に答える
0

何をしたいのかわかりませんが、 Array=Array.splice(0,4) は何かを修正する必要があります..

于 2012-12-17T21:25:33.103 に答える