Splice然后在ActionScript 3中重新索引数组

时间:2012-12-17 21:13:22

标签: actionscript-3

我想使用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;
}

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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类,您需要先创建一个数组实例。

问题很混乱,因为您使用的是Array类名而不是数组的实例。但正如这篇文章的评论者所说,如果你拼接元素,它会自动重新索引。

答案 2 :(得分:0)

我不确定你想做什么,但是Array = Array.splice(0,4)应该修复一些..