讨论三:循环差不多了吧,程序的优化不仅仅是循环哦 在从一个序列、集合里剔除重复的工作,大家都有什么技巧呢? 比如要往一个序列里添加内容,但是又不可以是这个序列里已经有的,也就是说保证这个序列里的内容是不重复的, 最常见的是数组,加入很方便,push进去,但是要判断是否重复了,就很麻烦,一般都是用一个for遍历,逐一对比,但是每push一次都要先做个循环判断,就非常之慢,于是改用object, var xxx={aaa:1,abc:1,ccc:1}; 那我在新加入的时候只要判断if(xxx['ddd']!=1)xxx['ddd']=1,不必再遍历 要取得整个序列也很方便,for(var i in xxx)trace(i+'='+xxx[i])
让高手见笑了
回帖一: 这个做法实在事太好了!思想不错,完全可以避免数组历遍。 在flash里面完全适用,如果对于c++这些需要数组预定义的 语言的话,就要改一下了。不过思想方面应该继承。 佩服佩服
回帖二: 能用object的“键-值”查询的地方当然应该尽量使用,flash里的数组实在太慢了。 一个最有说服力的例子就是,如果要遍历一个数组,比如给所有的项赋值,在没有操作顺序的要求下,用for(...in...)要比for(...;...;...)快的多。这就是因为for in在flash执行的时候采用的是先建立“键-值”枚举表,然后再循环的缘故。
回帖三: 如果插入的是字符串的话,这个方法最好了 不过如果插入的是数字的话,连标标签也用不到 例如插入一个数num 直接if(xxx[num]==1)就行了 利用了flash中数组可以不连续赋值,没被赋值地元素为undefined这一特性 嗬嗬,其实道理和时间复杂度都是一样的 不过不知道这样会不会使空间复杂度增大?
原贴地址:http://www.blueidea.com/bbs/NewsDetail.asp?id=1057820 仍在讨论中,敬请关注.
本文链接:http://www.blueidea.com/tech/multimedia/2003/481.asp
出处:蓝色理想
责任编辑:handmade
上一页 讨论二 下一页
◎进入论坛Flash专栏版块参加讨论
|