<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. linux上安装jdk并添加环境变量

    ==========ubuntu============================= http://www.oracle.com/technetwork/java/javasebusiness/ ...

  2. Google的Bigtable学习笔记(不保证正确性)

    跪求各路大侠指正:1.首先是一个列式存储的简单数据模型的数据库,它比键值对模型/文档模型NoSQL数据库复杂点(也就更强一点).2.它的分布式存储性能依靠于GFS也就对单机房网络有硬性指标.3.它同时 ...

  3. SQLSERVER 2012之AlwaysOn -- 一次硬件升级引发的问题

    这是上周遇到的一个案例:对已有的硬件进行升级而引发的问题,期间还触发了一个比较严重的BUG,可谓多灾多难:不过值得庆幸的是,在一连串连锁问题出现的时候,并没有出现人工操作失误(这往往是在处理故障中风险 ...

  4. SQLSERVER拯救某个时间点被误删除的数据

    SQLSERVER拯救某个时间点被误删除的数据 转载自:http://blog.csdn.net/dba_huangzj/article/details/8491327 要拯救某个时间点被误删除的数据 ...

  5. 随机数是骗人的,.Net、Java、C为我作证

    几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数.比如在.Net中编写下面的代码: Random rand = ne ...

  6. 个性二维码开源专题<后背景>

    //设置图片资源 private Image img1; public override void SetParam() { base.SetParam(); //读取图片 string _image ...

  7. T4:T4 笔记 + Trait 示例

    背景 官方教程:http://msdn.microsoft.com/en-us/library/vstudio/bb126445.aspx. 如果开发环境或编译器内置了对模板的支持而没有善加利用,就算 ...

  8. Hash哈希(二)一致性Hash(C++实现)

    一致性Hash 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,经常用于分布式.负载均衡等. 原理 一致哈希是 ...

  9. JSON相关(一):JSON.parse()和JSON.stringify()

    parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":&qu ...

  10. 关于消除if-else的简单总结

    if-else是计算机语言中基本的分支语句,虽然很简单,但可能会出现滥用的情况,如图: 这种标记判断,嵌套成这样(其实没有必要嵌套),会让别人觉得作者水平很低. 可以看出,这些if仅仅是在判断一个变量 ...