JS 清除字符串?dāng)?shù)組中,重復(fù)元素的實(shí)現(xiàn)方法
JS 清除字符串?dāng)?shù)組中,重復(fù)元素的實(shí)現(xiàn)方法
<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]) //如果當(dāng)前元素與后一個(gè)元素相等 haha.splice(i+j+1,1); //然后就移除下一個(gè)元素 } } return haha; } //方法二 function getUnique(someArray) { tempArray=someArray.slice(0);//復(fù)制數(shù)組到臨時(shí)數(shù)組 for(var i=0;i<tempArray.length;i++) { for(var j=i+1;j<tempArray.length;) { if(tempArray[j]==tempArray[i]) //后面的元素若和待比較的相同,則刪除并計(jì)數(shù); //刪除后,后面的元素會(huì)自動(dòng)提前,所以指針j不移動(dòng) { tempArray.splice(j,1); } else { j++; } //不同,則指針移動(dòng) } } return tempArray; } //方法三 正則表達(dá)式 -- 適用于字符型數(shù)組 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"); } //方法四 關(guān)聯(lián)結(jié)構(gòu) 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元素 方法一算法計(jì)耗時(shí) "+ d +" 毫秒!<br/><br/>"); //大約370ms~390ms左右 var d = new Date().getTime(); document.write(getUnique(arrData)); d = new Date().getTime()-d; document.write("<br/>2000元素 方法二算法計(jì)耗時(shí) "+ d +" 毫秒!<br/><br/>"); //大約360ms~380ms左右 var d = new Date().getTime(); document.write(getUnique2(arrData)); d = new Date().getTime()-d; document.write("<br/>2000元素 正則表達(dá)式 方法三算法計(jì)耗時(shí) "+ d +" 毫秒!<br/><br/>");//大約80ms左右 var d = new Date().getTime(); document.write(arrData.unique()); d = new Date().getTime()-d; document.write("<br/>2000元素 關(guān)聯(lián)結(jié)構(gòu) 方法四算法計(jì)耗時(shí) "+ d +" 毫秒!<br /><br />");//大約0ms~10ms左右 //--> </script>
以上這篇JS 清除字符串?dāng)?shù)組中,重復(fù)元素的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
javascript避免數(shù)字計(jì)算精度誤差的方法詳解
本篇文章主要是對(duì)javascript避免數(shù)字計(jì)算精度誤差的方法進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-03-03html5+javascript實(shí)現(xiàn)簡(jiǎn)單上傳的注意細(xì)節(jié)
這篇文章主要為大家詳細(xì)介紹了html5+javascript實(shí)現(xiàn)上傳操作的注意細(xì)節(jié),form表單樣式不美觀等細(xì)節(jié)問題,感興趣的小伙伴們可以參考一下2016-04-04JS實(shí)現(xiàn)復(fù)選框的全選和批量刪除功能
本文主要介紹了JS實(shí)現(xiàn)復(fù)選框的全選和批量刪除功能的方法代碼。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04基于JavaScript實(shí)現(xiàn)手機(jī)短信按鈕倒計(jì)時(shí)(超簡(jiǎn)單)
在淘寶等購(gòu)物網(wǎng)站,我們都會(huì)看到一個(gè)發(fā)送短信倒計(jì)時(shí)的按鈕,究竟是如何實(shí)現(xiàn)的呢?下面小編通過本篇文章給大家分享一段代碼關(guān)于js實(shí)現(xiàn)手機(jī)短信按鈕倒計(jì)時(shí),需要的朋友參考下2015-12-12JS中類的靜態(tài)方法,靜態(tài)變量,實(shí)例方法,實(shí)例變量區(qū)別與用法實(shí)例分析
這篇文章主要介紹了JS中類的靜態(tài)方法,靜態(tài)變量,實(shí)例方法,實(shí)例變量區(qū)別與用法,結(jié)合實(shí)例形式詳細(xì)分析了JS中類的靜態(tài)方法,靜態(tài)變量,實(shí)例方法,實(shí)例變量相關(guān)功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03Javascript 獲取字符串字節(jié)數(shù)的多種方法
Javascript 字符串字節(jié)數(shù)獲取功能多種方法2009-06-06JS與jQuery實(shí)現(xiàn)子窗口獲取父窗口元素值的方法
這篇文章主要介紹了JS與jQuery實(shí)現(xiàn)子窗口獲取父窗口元素值的方法,涉及javascript與jQuery操作窗口元素的相關(guān)技巧,需要的朋友可以參考下2017-04-04