• 清除字符串数组中,重复元素


    一、JS实现(收藏)

    <script language="JavaScript">
    <!--
    var arrData=new Array();
    for(var i=0; i<1000; i++)
    {
    arrData[arrData.length] 
    = String.fromCharCode(Math.floor(Math.random()*26)+97);
    }

    //document.write(arrData+"<br/>"); 

    //方法一,普通遍历
    function myArray_Unique(myArray)
    {
    //var myArray=new Array("a","a","c","a","c","d","e","f","f","g","h","g","h","k");
    var haha=myArray;
    for(var i=0;i<myArray.length;i++)
    {
    for(var j=0;j<myArray.length;j++)
    {
    temp
    =myArray[i];
    if((i+j+1)<myArray.length&&temp==myArray[i+j+1]) //如果当前元素与后一个元素相等
    haha.splice(i+j+1,1); //然后就移除下一个元素 
    }

    }

    return haha;
    }
     

    //方法二
    function getUnique(someArray)
    {
    tempArray
    =someArray.slice(0);//复制数组到临时数组
    for(var i=0;i<tempArray.length;i++)
    {
    for(var j=i+1;j<tempArray.length;)
    {
    if(tempArray[j]==tempArray[i])
    //后面的元素若和待比较的相同,则删除并计数;
    //
    删除后,后面的元素会自动提前,所以指针j不移动
    {
    tempArray.splice(j,
    1);
    }

    else
    {
    j
    ++;
    }

    //不同,则指针移动
    }

    }

    return tempArray;
    }
     

    //方法三 正则表达式 -- 适用于字符型数组
    function getUnique2(A)
    {
    var str = "\x0f"+ A.join("\x0f");
    while(/(\w+)[^\1]*\1/.test(str))
    str 
    = str.replace("\x0f"+ RegExp.$1"");
    return str.substr(1).split("\x0f");
    }
     

    //方法四 关联结构
    Array.prototype.unique = array_unique;
    function array_unique()
    {
    var o = new Object();
    for (var i=0,j=0; i<this.length; i++)
    {
    if (typeof o[this[i]] == 'undefined')
    {
    o[
    this[i]] = j++;
    }

    }

    this.length = 0;
    for (var key in o)
    {
    this[o[key]] = key;
    }

    return this;
    }
     

    var d = new Date().getTime();
    document.write(myArray_Unique(arrData));
    = new Date().getTime()-d;
    document.write(
    "<br/>2000元素 方法一算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约370ms~390ms左右 

    var d = new Date().getTime();
    document.write(getUnique(arrData));
    = new Date().getTime()-d;
    document.write(
    "<br/>2000元素 方法二算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约360ms~380ms左右 

    var d = new Date().getTime();
    document.write(getUnique2(arrData));
    = new Date().getTime()-d;
    document.write(
    "<br/>2000元素 正则表达式 方法三算法计耗时 "+ d +" 毫秒!<br/><br/>");//大约80ms左右 

    var d = new Date().getTime();
    document.write(arrData.unique());
    = new Date().getTime()-d;
    document.write(
    "<br/>2000元素 关联结构 方法四算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右 

    //-->
    </script> 

    二、巧用.net的NameValueCollection实现(原创)

     

    /// <summary>
    /// 删除字符串组中相同元素
    /// </summary>
    /// <param name="strArr"></param>
    /// <returns></returns>

    public static string[] GetUnique(string[] strArr)
    {
    System.Collections.Specialized.NameValueCollection name 
    = new System.Collections.Specialized.NameValueCollection(); 

    foreach (string s in strArr)
    {
    name[s] 
    = s;
    }

    return name.AllKeys;
    }
     
  • 相关阅读:
    MYSQL: 什么是MYSQLD Service
    100 logging模块
    099 hashlib和hmac模块
    098 json和pickle模块
    097 sys模块
    096 os模块
    095 random模块
    094 datetime模块
    093 time模块
    092 模块基础实战之ATM和购物车系统分文件处理
  • 原文地址:https://www.cnblogs.com/CSharp/p/477406.html
Copyright © 2020-2023  润新知