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