<script language="JavaScript">
<!--
var arrData=new Array();
for(var i=0; i<10000; 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;
} function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
} var d = new Date().getTime();
document.write(myArray_Unique(arrData));
d = new Date().getTime()-d;
document.write("<br/>2000元素 方法一算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约370ms~390ms左右 var d = new Date().getTime();
document.write(getUnique(arrData));
d = new Date().getTime()-d;
document.write("<br/>2000元素 方法二算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约360ms~380ms左右 var d = new Date().getTime();
document.write(getUnique2(arrData));
d = new Date().getTime()-d;
document.write("<br/>2000元素 正则表达式 方法三算法计耗时 "+ d +" 毫秒!<br/><br/>");//大约80ms左右 var d = new Date().getTime();
document.write(arrData.unique());
d = new Date().getTime()-d;
document.write("<br/>2000元素 关联结构 方法四算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右 var d = new Date().getTime();
document.write(unique(arrData));
d = new Date().getTime()-d;
document.write("<br/>2000元素 hashtable 方法五算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右 //-->
</script>
        <script language="JavaScript">  
    <!--  
    var arrData=new Array();  
    for(var i=0; i<10000; 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;  
    }     function unique(arr) {
    var result = [], hash = {};
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
        if (!hash[elem]) {
            result.push(elem);
            hash[elem] = true;
        }
    }
    return result;
   }  
      
    var d = new Date().getTime();  
    document.write(myArray_Unique(arrData));  
    d = new Date().getTime()-d;  
    document.write("<br/>2000元素 方法一算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约370ms~390ms左右   
      
    var d = new Date().getTime();  
    document.write(getUnique(arrData));  
    d = new Date().getTime()-d;  
    document.write("<br/>2000元素 方法二算法计耗时 "+ d +" 毫秒!<br/><br/>"); //大约360ms~380ms左右   
      
    var d = new Date().getTime();  
    document.write(getUnique2(arrData));  
    d = new Date().getTime()-d;  
    document.write("<br/>2000元素 正则表达式 方法三算法计耗时 "+ d +" 毫秒!<br/><br/>");//大约80ms左右   
      
    var d = new Date().getTime();  
    document.write(arrData.unique());  
    d = new Date().getTime()-d;  
    document.write("<br/>2000元素 关联结构 方法四算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右        var d = new Date().getTime();  
    document.write(unique(arrData));  
    d = new Date().getTime()-d;  
    document.write("<br/>2000元素 hashtable 方法五算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右   
      
    //-->  
    </script>  

JS 清除字符串数组中,重复元素的更多相关文章

  1. php 去除数组中重复元素

    去除数组中重复元素, 找了下可以一下两个函数 php array_flip()与array_uniqure() $arr = array(…………) ;// 假设有数组包含一万个元素,里面有重复的元素 ...

  2. js向一个数组中插入元素的几个方法-性能比较

    向一个数组中插入元素是平时很常见的一件事情.你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素. 但是这些已知的方法,并不意味着没有更 ...

  3. Js中去除数组中重复元素的6种方法

    方法一: Array.prototype.method1 = function(){ var arr=[]; //定义一个临时数组 for(var i = 0; i < this.length; ...

  4. jquery删除数组中重复元素

    首先定义如下数组: var arr=[0,2,3,5,6,9,2]; 我们可以看到数组中存在重复元素'2'; 最后通过jquery筛选应该得到[0,2,3,5,6,9]; ok,首先我们再定义一个空数 ...

  5. [Perl] 删除数组中重复元素

    写一个小程序时候,需要去除一个数组中的重复元素,搜索了一下,找到的代码主要是两种,一种是使用grep函数,一种是转换为hash表,代码分别如下: 使用grep函数代码片段:代码: my @array ...

  6. 数组去重 && 快速排序 && 数组中重复元素最多的 && 深拷贝

    var arr0 = [1,3,3,3,4,4,4,4,5,5]; var arr1 = [10,9,2,5,7,34,65,48,90,103]; var newArr=[]; /* for(var ...

  7. LeetCode 第26题--数组中重复元素

    1. 题目 2.题目分析与思路 3.代码 1. 题目 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2. 你不需要考虑数组中超 ...

  8. STL笔记(こ)--删除数组中重复元素

    使用STL中的Unique函数: #include<bits/stdc++.h> using namespace std; void fun(int &n) //配套for_eac ...

  9. js-一种去掉数组中重复元素的方法

    思路来源于某个同学的博客 function norepeat(arr){ return arr.filter(function(val,index,array) { return array.inde ...

随机推荐

  1. 关于 webapi ajax进度条信息设置

    1.Web.config 设置跨域 <httpProtocol> <customHeaders> <add name="Access-Control-Allow ...

  2. VB6.0 调用存储过程

    最近有在做一个需求,需要在VB6.0中调用存储过程,整理了一下,供大家参考, 范例: Function callStoredProcedure(sEmployeeID As String, Optio ...

  3. 模拟Linux的shell

    在学习了Linux的进程控制之后,学习了fork函数和exec函数族,通过这些个函数可以简单的实现一份shell,就是实现一份命令行解释器,当然是简单版的,实现功能如下 能执行普通的命令如ls ,ps ...

  4. Cocos2d-x v3.6制作射箭游戏(二)

    原文 Cocos2d-x v3.6制作射箭游戏(二) 六 24, 2015by RENSHANin COCOS2D-X 上章我们创建并加载了游戏地图,接下来的两章我们将实现如下的效果. 在开始之前,先 ...

  5. java中Class.getResource用法

    用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file ...

  6. Android 5.x特性概览二

    上文 ,对Android 5.X特性,主要是Material Design的特性进行了介绍,这篇文章我们来使用Material Design主题. Material Design 现在有三种默认的主题 ...

  7. 大熊君说说JS与设计模式之------状态模式State

    一,总体概要 1,笔者浅谈 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式. 状态模式主要解决的是当控制一个对象状态的条件表达式过于 ...

  8. 微软Dynamics 使用葡萄城的Wijmo 5提供移动端用户界面

    近日,全球最大的控件提供商葡萄城公司宣布: 葡萄城近日与微软公司达成合作,将Wijmo 产品线的HTML5和JaveScript 控件融合到微软Dynamics CRMOnline 2016版中. 随 ...

  9. ios 常用第三方库要加的framework,ARC的设置

    一,常用第三方库要加的framework 1,SQLite3数据库:FMDatabase 需要添加:libsqlite3.dylib 2,网络请求:ASIHTTPRequest 需要添加:CFNetw ...

  10. get请求的最大字符长度

    各浏览器HTTP Get请求URL最大长度并不相同,几类常用浏览器最大长度及超过最大长度后提交情况如下: IE6.0                :url最大长度2083个字符,超过最大长度后无法提 ...