前端面试高频题:删除数组重复元素的多种方法
生活随笔
收集整理的這篇文章主要介紹了
前端面试高频题:删除数组重复元素的多种方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近在想著換工作,去了一家中關(guān)村的上市公司,面試官隨便問了幾個問題其中就提到了怎么刪除數(shù)組元素的方法,表示這已經(jīng)是第三次遇到了這個問題了,由于知識口頭說說所以就隨便說了下,之前用的時候都是直接找的方法庫雖然知道大致是怎么寫的但是還沒有真正寫過,網(wǎng)上的方法還是蠻多的這里也給大家分享一個作者寫的吧,希望對初學(xué)者有所幫助:
//數(shù)組去重的方法 Array.prototype.unique=function(){//集中聲明變量var oldArr=this,newArr=[oldArr[0]],len=oldArr.length,i=1;//過濾空數(shù)組if(!len) return this;//過濾重復(fù)元素for(;i<len;i++){newArr.indexOf(oldArr[i])<0 ? newArr.push(_this) : ''; }//返回過濾后的數(shù)組沒有影響原數(shù)組return newArr; } var arr=['a','a','b','a','c','d']; console.log(arr.unique());//["a", "b", "c", "d", unique: function]?
?
雖然網(wǎng)上也有很多而且自己寫的也不咋地,但是畢竟自己寫的邏輯清楚以后還可以順著邏輯擴(kuò)展比如擴(kuò)展到對象元素去重或者是可以同時操作多個數(shù)組等等這里再放上別人的寫的幾個方法可以綜合比較下
方法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}
原文出處:http://blog.sina.com.cn/s/blog_77a4568a0101d4lq.html
方法2:遍歷要刪除的數(shù)組arr, 把元素分別放入另一個數(shù)組tmp中,在判斷該元素在arr中不存在才允許放入tmp中 用到兩個函數(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)換 自動就把重復(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; }?
?
?
方法都差不多第三個方法想法還是蠻高明的~
轉(zhuǎn)載于:https://www.cnblogs.com/yy-hh/p/4591852.html
總結(jié)
以上是生活随笔為你收集整理的前端面试高频题:删除数组重复元素的多种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UITextField详解
- 下一篇: 移动前端开发基础与优化