我想使用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;
}
答案 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)应该修复一些..