javascript刪除數(shù)組重復(fù)元素的方法匯總
本文實(shí)例講述了javascript刪除數(shù)組重復(fù)元素的方法。分享給大家供大家參考。具體分析如下:
這里分享一個(gè)前端面試高頻題,主要實(shí)現(xiàn)javascript刪除數(shù)組重復(fù)元素。希望對(duì)初學(xué)者有所幫助
//數(shù)組去重的方法 Array.prototype.unique=function(){ //集中聲明變量 var oldArr=this, newArr=[oldArr[0]], len=oldArr.length, i=1; //過(guò)濾空數(shù)組 if(!len) return this; //過(guò)濾重復(fù)元素 for(;i<len;i++){ newArr.indexOf(oldArr[i])<0 ? newArr.push(_this) : ''; } //返回過(guò)濾后的數(shù)組沒(méi)有影響原數(shù)組 return newArr; } var arr=['a','a','b','a','c','d']; console.log(arr.unique()); //["a", "b", "c", "d", unique: function]
雖然網(wǎng)上也有很多而且自己寫(xiě)的也不咋地,但是畢竟自己寫(xiě)的邏輯清楚以后還可以順著邏輯擴(kuò)展比如擴(kuò)展到對(duì)象元素去重或者是可以同時(shí)操作多個(gè)數(shù)組等等這里再放上別人的寫(xiě)的幾個(gè)方法可以綜合比較下
方法1:
function oSort(arr) { var result ={}; var newArr=[]; for(var i=0;i { if(!result[arr[i]]) { newArr.push(arr[i]) result[arr[i]]=1 } } return newArr }
方法2:
遍歷要?jiǎng)h除的數(shù)組arr, 把元素分別放入另一個(gè)數(shù)組tmp中,在判斷該元素在arr中不存在才允許放入tmp中
用到兩個(gè)函數(shù):for ...in 和 indexOf()
var student = ['qiang','ming','tao','li','liang','you','qiang','tao']; function unique(arr){ // 遍歷arr,把元素分別放入tmp數(shù)組(不存在才放) var tmp = new Array(); for(var i in arr){ //該元素在tmp內(nèi)部不存在才允許追加 if(tmp.indexOf(arr[i])==-1){ } } return tmp; }
方法3:
把目標(biāo)數(shù)組arr的元素值和鍵的位置調(diào)換 自動(dòng)就把重復(fù)的元素給刪除掉了,調(diào)換后的樣子:array('qiang'=>1,'ming'=>1,'tao'=>1)
<script type="text/javascript"> var student = ['qiang','ming','tao','li','liang','you','qiang','tao']; function unique(arr){ var tmp = new Array(); for(var m in arr){ tmp[arr[m]]=1; } //再把鍵和值的位置再次調(diào)換 var tmparr = new Array(); for(var n in tmp){ tmparr.push(n); } return tmparr; } </script>
方法4
/** * 去除數(shù)組重復(fù)元素 */ function uniqueArray(data){ data = data || []; var a = {}; for (var i=0; i<data.length; i++) { var v = data[i]; if (typeof(a[v]) == 'undefined'){ a[v] = 1; } }; data.length=0; for (var i in a){ data[data.length] = i; } return data; }
方法都差不多第三個(gè)方法想法還是蠻高明的~
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- JS查找數(shù)組中重復(fù)元素的方法詳解
- JavaScript去掉數(shù)組中的重復(fù)元素
- JavaScript實(shí)現(xiàn)刪除數(shù)組重復(fù)元素的5種常用高效算法總結(jié)
- js過(guò)濾數(shù)組重復(fù)元素的方法
- JS 清除字符串?dāng)?shù)組中,重復(fù)元素的實(shí)現(xiàn)方法
- JavaScript 數(shù)組去重并統(tǒng)計(jì)重復(fù)元素出現(xiàn)的次數(shù)實(shí)例
- javascript中去除數(shù)組重復(fù)元素的實(shí)現(xiàn)方法【實(shí)例】
- js 高效去除數(shù)組重復(fù)元素示例代碼
- js 處理數(shù)組重復(fù)元素示例代碼
- JS判斷數(shù)組里是否有重復(fù)元素的方法小結(jié)
相關(guān)文章
JavaScript數(shù)值轉(zhuǎn)換的三種方式總結(jié)
JavaScript數(shù)值轉(zhuǎn)換一般有三種方式,Number(param)函數(shù)、parseInt(param)、parseIFloat(param),下面為大家詳細(xì)介紹,需要的朋友可以參考下2014-07-07使用Object.defineProperty實(shí)現(xiàn)簡(jiǎn)單的js雙向綁定
這篇文章主要介紹了使用Object.defineProperty實(shí)現(xiàn)簡(jiǎn)單的js雙向綁定的相關(guān)資料,需要的朋友可以參考下2016-04-04js Element Traversal規(guī)范中的元素遍歷方法
對(duì)于元素間的空格,在IE9之前,都不會(huì)返回文檔節(jié)點(diǎn),其它的所有瀏覽器都會(huì)返回文檔節(jié)點(diǎn),為了兼容瀏覽器這間的差異,又不更改已有的DOM 標(biāo)準(zhǔn),所以有了 Element Traversal 規(guī)范2018-04-04JavaScript HTML DOM 元素 (節(jié)點(diǎn))新增,編輯,刪除操作實(shí)例分析
這篇文章主要介紹了JavaScript HTML DOM 元素 (節(jié)點(diǎn))新增,編輯,刪除操作,結(jié)合實(shí)例形式分析了JavaScript針對(duì)HTML DOM 元素 (節(jié)點(diǎn))的新增,編輯,刪除相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-03-03利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法
這篇文章主要介紹了利用JavaScript腳本實(shí)現(xiàn)滾屏效果的方法,即一個(gè)公告欄顯示般的效果,需要的朋友可以參考下2015-07-07原生JavaScript實(shí)現(xiàn)拖動(dòng)校驗(yàn)功能
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)拖動(dòng)校驗(yàn)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09JavaScript通過(guò)this變量快速找出用戶(hù)選中radio按鈕的方法
這篇文章主要介紹了JavaScript通過(guò)this變量快速找出用戶(hù)選中radio按鈕的方法,涉及javascript中this變量的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03JavaScript Date對(duì)象使用總結(jié)
js 日期對(duì)象的一些方法總結(jié)2009-05-05