zoukankan      html  css  js  c++  java
  • ActionScript实现数组快速去重算法

            今天在写flex时遇到了,需要过滤数组中重复数据的问题,查询后发现,flex没有java中set这样的集合,可以用来直接去重。

    就简单的写了个快速去重算法,测试了一下,速度挺快的。我array里是String类型,如果类型是其它的,替换String就行了。肚子饿的很,今天不加班了。。早早的回吧。

    /**
     * Created with IntelliJ IDEA.
     * User: DongYang
     * Date: 13-3-25
     * Time: 下午7:46
     * Progress every day a little more.
     */
    package com.skycloud.nettopo.util {
    public class DataUtil {
        public static function  filterRepeat(array:Array):Array{
            array.forEach(function (str:String, i:int, a:Array):void { //我这里array里的元素为String类型
                if (array.length != rr(array, str).length) {
                    array = rr(array, str);
                    array = filterRepeat(array);
                }
            });
            return array;
            function rr(lines:Array, str:String):Array {
                lines = lines.filter(function (ss:String, ii:int, aa:Array):Boolean{
                    return ss != str;
                });
                lines = lines.concat(str);
                return lines;
            } 
        }
    }
    }

     2013.5.3 新增两种去重算法。

      public static function  removedDuplicates1(oldArray:Array):Array{
              var keys:Object = {};
              var key:Dictionary=new Dictionary();
               var newArray:Array=oldArray.filter(function(item:Object,index:uint,array):Boolean{
               
                if (keys.hasOwnProperty(String(item))) {
                    return false;
                } else {
                    keys[item] = item;
                    return true;
                } 
                
            });
            
              return newArray;
          }
        public static function  removedDuplicates2(oldArray:Array):Array{
            var keys:Dictionary=new Dictionary();
            var newArray:Array=oldArray.filter(function(item:String,index:uint,array):Boolean{
    
                if (keys[item]==item) {
                    return false;
                } else {
                    keys[item] = item;
                    return true;
                }
    
            });
    
            return newArray;
        }
  • 相关阅读:
    Windows系统批处理命令实现计划关机
    Git如何将本地test分支设置跟踪origin/test分支
    JavaScript动态实现div窗口弹出&消失功能
    深入理解 Array.prototype.map()
    JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
    Vue的移动端多图上传插件vue-easy-uploader
    如何开发一个npm包并发布
    emlog编辑器探寻之旅
    linux下安装nginx
    原生JavaScript中动画与特效的实现原理
  • 原文地址:https://www.cnblogs.com/yangpigao/p/2981375.html
Copyright © 2011-2022 走看看