闪吧论坛's Archiver

flashas3 发表于 2007-12-12 10:47

如何删除数组中的相同元素

例如
[code]
var arr:Array=["aa","bb","cc","aa"]
[/code]
如何取到只有aa,bb,cc的这样一个新数组?

ycccc8202 发表于 2007-12-12 11:25

var arr:Array=["aa","bb","cc","dd","bb","cc","aa","bb","gg","aa","cc"];
function formatX(arr:Array):Array {
        var obj:Object={};
        return arr.filter(function(item:*, index:int, array:Array):Boolean{
                                                                        return !obj[item]?obj[item]=true:false
                                                                });
}
trace(formatX(arr))

totem_nee 发表于 2007-12-12 22:59

好方法   :)  第一次见  收藏了。

烟波浩渺 发表于 2007-12-13 19:46

回复 #2 ycccc8202 的帖子

收藏了!刚刚学习春大虾的代码时又发现flash cs3的一个bug,大家将代码复制到动作面板后,点一下“自动套用格式”看看会出现什么问题。我的天哪,怎么会这样?

edgewalker 发表于 2007-12-14 16:40

:L 春大侠的代码实在太难读了!在return里套return,是在下生平第一次见。能否稍稍分解一些呢?为了咱们一干菜鸟,请大侠多辛苦点吧!当然了,如果满足于能用就行,就当我没说。

ycccc8202 发表于 2007-12-14 17:08

正常写法是这样子:
[code]
var arr:Array=["aa","bb","kk","cc","dd","bb","kk","cc","aa","bb","gg","aa","cc"];
var obj:Object={};
function formatX(arr:Array):Array {

        var resultArray:Array=arr.filter(callBack);
        return resultArray;
}
function callBack(item:*, index:int, array:Array):Boolean {
        if (obj[item]==undefined) {
                obj[item]=true;
                return true;
        } else {
                return false;
        }
}
trace(formatX(arr));
[/code]

wwj256 发表于 2008-5-28 10:23

顶一个,算法不错,学习!:victory:

ibio 发表于 2008-5-30 12:10

看来,AS3.0封装的函数确实很实用啊!~

michaelkua 发表于 2008-6-3 03:15

高薪诚聘!!!深圳市iLemon网络科技高薪诚聘WebGame程序开发人才加盟

**** 作者被禁止或删除 内容自动屏蔽 ****

jessea1213 发表于 2008-7-12 05:55

不错,学了,谢谢斑竹,希望我以后有什么问题别嫌我是菜鸟,也帮帮我哦

Poshidon 发表于 2008-7-12 10:17

算法好

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.