兩種常用的javascript數(shù)組去重方法思路及代碼
第一種是比較常規(guī)的方法
思路:
1.構(gòu)建一個(gè)新的數(shù)組存放結(jié)果
2.for循環(huán)中每次從原數(shù)組中取出一個(gè)元素,用indexOf查找新數(shù)組中是否有該元素
3.若沒(méi)有,則存到結(jié)果數(shù)組中
Array.prototype.unique1 = function(){
var res = [];
for(var i = 0; i < this.length; i++){
if(res.indexOf(this[i]) == -1){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1())
此基礎(chǔ)上可以略微優(yōu)化,但原理不變,效果也不明顯
Array.prototype.unique1 = function(){
var res = [this[0]];//直接將原數(shù)組中的第一個(gè)元素存入構(gòu)建的新數(shù)組中
for(var i = 1; i < this.length; i++){//循環(huán)從第二個(gè)元素開(kāi)始
if(res.indexOf(this[i]) == -1){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1())
第二種方法比上面的方法效率要高
思路:
1.先將原數(shù)組進(jìn)行排序
2.檢查原數(shù)組中的第i個(gè)元素 與 結(jié)果數(shù)組中的最后一個(gè)元素是否相同,因?yàn)橐呀?jīng)排序,所以重復(fù)元素會(huì)在相鄰位置
3.如果不相同,則將該元素存入結(jié)果數(shù)組中
Array.prototype.unique2 = function(){
this.sort(); //先排序
var res = [this[0]];
for(var i = 1; i < this.length; i++){
if(this[i] !== res[res.length - 1]){
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique2())
相關(guān)文章
JavaScript的級(jí)聯(lián)函數(shù)用法簡(jiǎn)單示例【鏈?zhǔn)秸{(diào)用】
這篇文章主要介紹了JavaScript的級(jí)聯(lián)函數(shù)用法,結(jié)合簡(jiǎn)單實(shí)例形式分析了javascript鏈?zhǔn)秸{(diào)用具體定義及使用方法,需要的朋友可以參考下2019-03-03
了不起的11個(gè)JavaScript代碼重構(gòu)最佳實(shí)踐小結(jié)
這篇文章主要介紹了了不起的11個(gè)JavaScript代碼重構(gòu)最佳實(shí)踐小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄
最近學(xué)到了一個(gè)比較好用的框架uni-app,可以做六端適配,學(xué)習(xí)一下,下面這篇文章主要給大家介紹了關(guān)于uniapp中獲取dom元素的方法及更改dom元素顏色踩坑記錄的相關(guān)資料,需要的朋友可以參考下2023-03-03
JavaScript提取PDF和Word文檔內(nèi)圖片
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)提取PDF和Word文檔內(nèi)的圖片,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2025-03-03
javascript 設(shè)置文本框中焦點(diǎn)的位置
設(shè)置文本框中焦點(diǎn)的位置的實(shí)現(xiàn)代碼2009-11-11

