-2

我想使用 删除数组的前四个索引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';

我通过计时器访问数组,在每次迭代中我想删除数组的前四个索引。我假设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

If I am understanding what you want correctly, you need to use the unshift method of Array.

example :

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

Also, you are using the Array Class improperly, you need to create an instance of an array to work with first.

The question is confusing because you used Array class name instead of an instance of an array. But as the commenter on this post said, if you splice elements, it automatically re-indexes.

于 2012-12-17T21:29:30.233 回答
0

我不确定你想做什么,但 Array=Array.splice(0,4) 应该解决一些问题。

于 2012-12-17T21:25:33.103 回答