现在的位置: 首页 > 综合 > 正文

As3中删除数组的重复值

2013年11月10日 ⁄ 综合 ⁄ 共 1288字 ⁄ 字号 评论关闭

今天用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起步网

抱歉!评论已关闭.