As3中删除数组的重复值
今天用AS3.0做东西的时候碰到一个问题,就是数组中的重复项如何删除,想想用其它 的语言应该没问题,可是用AS3.0就有点为难了,于是在天地会找了些方法,列举以下几个方法..云计算老兄提供的方法..var arr:Array=[原数组]for(var i:int=0,temp:Array=[];i if(temp.indexOf(arr[i])==-1){
今天用AS3.0做东西的时候碰到一个问题,就是数组中的重复项如何删除,想想用其它 的语言应该没问题,可是用AS3.0就有点为难了,于是在天地会找了些方法,列举以下几个方法..
云计算老兄提供的方法..
var arr:Array=[原数组]
for(var i:int=0,temp:Array=[];i<arr.length;i++){
if(temp.indexOf(arr[i])==-1){
temp.push(arr[i])
}
}
arr=temp;
云兄历害啊,让我学到了for循环可以有两个初始变量
imcotton 提供的方法应该说是更高深点,慢慢看居然学会了好多知识.
trace(toSetArray(['12', '3', '3', '4', '12'])); // output 3,12,4
function toSetArray ($arr:Array):Array
{
var obj:Object = {};
var arr:Array = [];
for (var i:String in $arr) obj[$arr[i]] = i;
for (var j:Object in obj) arr[arr.length] = j;
return arr;
}
唯一一点不足就是面对数字就…所以应该用dictionary代替object
大头的也不错..顶一下
function checkRepeat(num:Number , index:int, arr:Array):Boolean
{
return arr.indexOf(num) == index;
}
var arr:Array = [3,3,3,1,9,3,1,5,6];
trace(arr.filter(checkRepeat));
flash023 很棒,我一直佩服的对象,向这位长老学到了好多..
var a:Array=new Array(”a”,”a”,”c”,”b”,”b”,”b”,”c”,”f”,”c”,”d”,”d”,”d”,”g”,”g”,”g”,”g”,”c”,”g”,”c”,”g”,”g”,”c”,”g”,”g”,”g”);
for (var i:int = a.indexOf(”c”); i <= a.lastIndexOf(”c”); i++) {
var _n:uint=a.indexOf(”c”);
_n>=0&&a.splice(_n,1);//当索引为-1时不能删除,否则会误删
}
不过它的数组会丢失一些元素
上面的方法好不错,我就整理下,当次好人吧,方便大家多学点知识.
转载请注明:IT起步网
更多推荐
所有评论(0)