Apache flex 获取concat向量的最有效方法

Apache flex 获取concat向量的最有效方法,apache-flex,actionscript-3,Apache Flex,Actionscript 3,在特定位置将一个向量插入另一个向量最有效的方法是什么 例如: var aa:Vector.<int> = Vector.<int>([1, 2, 3]); var bb:Vector.<int> = Vector.<int>([9, 8, 7]); var insertIndex:int = 1; bb=bb.slice(0, insertIndex).concat(aa).concat(bb.slice(insertIndex)); 结果是[

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

例如:

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

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

如果您需要一个接一个地concat,正如PatrickS提到的,bb.concat将完成这项工作

如果你需要在中间插入值,你就需要像

之类的东西。
for each (var i : int in aa.reverse())
{
    bb.splice(1,0,i);
}
或者,更优雅地说,如果你不能改变aa

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

目前,除了在
向量上执行循环外,没有其他内置函数,这里有两种方法(我没有对它们计时)

如果bb可以是新的
向量
,您可以执行以下操作:

var aa:Vector.<int> = Vector.<int>([1, 2, 3]);
var bb:Vector.<int> = Vector.<int>([9, 8, 7]);
var insertIndex:int = 1;
bb=bb.slice(0, insertIndex).concat(aa).concat(bb.slice(insertIndex));
如果无法更改bb,您可以进行
拼接
,但要准备插入新
阵列的元素

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);
var插入索引:int=1;
变量参数:数组=[insertIndex,0];//准备拼接调用的参数
变量j:int=2;//parms数组的长度
var len:int=aa.length;
对于(变量i:int=0;i
对于这个循环,变量“i”的作用是什么?两个示例中没有一个有效,两个示例中也没有一个有效。我仍然希望找到比循环和拼接更有效的方法。我认为concat在引擎罩后面做了一个循环,因此这两种解决方案在性能方面应该大致相当。看起来slice.concat.concat是迄今为止最有效的。