JS 清除字符串数组中,重复元素的实现方法
来源: 阅读:1072 次 日期:2016-06-23 16:19:11
温馨提示: 小编为您整理了“JS 清除字符串数组中,重复元素的实现方法”,方便广大网友查阅!

下面小编就为大家带来一篇JS 清除字符串数组中,重复元素的实现方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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/>"); 

<span style="color: #ff0000"><strong>//方法一,普通遍历

</strong></span>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;

<span style="color: #ff0000"><strong>//方法二

</strong></span>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;

<span style="color: #ff0000"><strong>//方法三 正则表达式 -- 适用于字符型数组

</strong></span>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");

<span style="color: #ff0000"><strong>//方法四 关联结构

</strong></span>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));

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左右 

//-->

</script>

以上这篇JS 清除字符串数组中,重复元素的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map