最有效的连接向量的方法

时间:2010-09-21 09:48:18

标签: flex actionscript-3

在特定位置将一个Vector插入另一个Vector的最有效方法是什么?

例如:

var aa:Vector.<int> = Vector.<int>([1, 2, 3]);
var bb:Vector.<int> = Vector.<int>([9, 8, 7]);

这似乎不起作用:

bb.splice(1, 0, aa);

结果是[9,0,8,7]。

2 个答案:

答案 0 :(得分:1)

目前除了在Vector上进行循环之外没有内置函数,这里有两种方法(我还没有计时)。

如果bb可以是新的Vector,您可以这样做:

var insertIndex:int = 1;
bb=bb.slice(0, insertIndex).concat(aa).concat(bb.slice(insertIndex));

如果bb无法更改,您可以执行splice,但要准备要插入新Array的元素:

var insertIndex:int = 1;

var parms:Array=[insertIndex, 0]; // prepare the arguments for the splice call
var j:int = 2; // length of the parms array

var len:int = aa.length;

for (var i:int = 0; i < len; i++, j++){
    parms[j] = aa[i];
}

// call the splice with the new arguments
bb.splice.apply(bb, parms);

答案 1 :(得分:0)

如果你需要一个接一个地连接,就像PatrickS提到bb.concat将完成这项工作一样。

如果您需要在中间插入值,则需要类似

的内容
for each (var i : int in aa.reverse())
{
    bb.splice(1,0,i);
}

或者,更优雅的是,如果你不能改变一个

var insertingIndex : int = 2;
for each ( var i : int in aa )
{
    bb.splice( insertingIndex, 0, i );
    insertingIndex++;
}