什么是在ActionScript(具体的ActionScript 3.0)合并两个有序阵列的好方法?由此产生的数组应该进行排序,并没有重复。
What's a nice way to merge two sorted arrays in ActionScript (specifically ActionScript 3.0)? The resulting array should be sorted and without duplicates.
要合并(连击)阵列,使用 .concat()
。
To merge (concatenate) arrays, use .concat()
.
下面是你如何能串联阵列,并在同一时间删除重复的两个例子。
Below are two examples of how you can concatenate arrays and remove duplicates at the same time.
更方便的方法:(你可以使用 ArrayUtil.createUniqueCopy()
从的的as3corelib )
More convenient way: (you can use ArrayUtil.createUniqueCopy()
from as3corelib)
// from as3corelib:
import com.adobe.utils.ArrayUtil;
var a1:Array = ["a", "b", "c"];
var a2:Array = ["c", "b", "x", "y"];
var c:Array = ArrayUtil.createUniqueCopy(a1.concat(a2)); // result: ["a", "b", "c", "x", "y"]
略快的方式:(可以通过数组循环自己,用Array.indexOf()检查重复)
Slightly faster way: (you can loop through the arrays yourself and use Array.indexOf()
to check for duplicates)
var a1:Array = ["a", "b", "c"];
var a2:Array = ["c", "b", "x", "y"];
var a3:Array = ["a", "x", "x", "y", "z"];
var c:Array = arrConcatUnique(a1, a2, a3); // result: ["a", "b", "c", "x", "y", "z"]
private function arrConcatUnique(...args):Array
{
var retArr:Array = new Array();
for each (var arg:* in args)
{
if (arg is Array)
{
for each (var value:* in arg)
{
if (retArr.indexOf(value) == -1)
retArr.push(value);
}
}
}
return retArr;
}