在特定位置将一个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]。
答案 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++;
}