當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
数组去重(JavaScript)先从网上整理一波,待验证
生活随笔
收集整理的這篇文章主要介紹了
数组去重(JavaScript)先从网上整理一波,待验证
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)組去重(JavaScript)
前端面試題:給定一個(gè)數(shù)組[1,3,2,4,5,3,22,21,2],去重。
方法很多
- for循環(huán)遍歷
- 雙層for循環(huán),存儲(chǔ)到新的數(shù)組
- 雙層for循環(huán),不聲明新的數(shù)組,在原數(shù)組使用splice方法
- 利用對(duì)象的屬性唯一(有問(wèn)題)
- 先排序,然后將第n+1個(gè)與第n個(gè)比較去重
- ES6語(yǔ)法,set()
- 使用遞歸
- 神操作
- 一些輪子
- 其他,比如包含了字符串,或者數(shù)組很大
for循環(huán)遍歷
Array.prototype.distinct = function(){var arr = this,result = [],i,j,len = arr.length;for(i = 0; i < len; i++){for(j = i + 1; j < len; j++){if(arr[i] === arr[j]){j = ++i;}}result.push(arr[i]);}return result; } var arra = [1,2,3,4,4,1,1,2,1,1,1]; arra.distinct(); //返回[3,4,2,1] Array.prototype.distinct = function (){var arr = this,i,j,len = arr.length;for(i = 0; i < len; i++){for(j = i + 1; j < len; j++){if(arr[i] == arr[j]){arr.splice(j,1);len--;j--;}}}return arr; }; var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,]; var b = a.distinct(); console.log(b.toString()); //1,2,3,4,5,6,56地址
利用對(duì)象的屬性唯一(有問(wèn)題)
function unique(arr){var res =[];var json = {};for(var i=0;i<arr.length;i++){if(!json[arr[i]]){res.push(arr[i]);json[arr[i]] = 1;}}return res;}地址
先排序,然后將第n+1個(gè)與第n個(gè)比較去重
function unique(arr){var arr2 = arr.sort();var res = [arr2[0]];for(var i=1;i<arr2.length;i++){if(arr2[i] !== res[res.length-1]){res.push(arr2[i]);}}return res;}地址
ES6語(yǔ)法,set()
貼一個(gè)來(lái)自尤雨溪的,網(wǎng)址
// ES6 function unique (arr) {const seen = new Map()return arr.filter((a) => !seen.has(a) && seen.set(a, 1)) } // or function unique (arr) {return Array.from(new Set(arr)) }作者:尤雨溪 鏈接:https://www.zhihu.com/question/29558082/answer/44854426 來(lái)源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。另一個(gè)簡(jiǎn)潔的
// ES6:一行關(guān)鍵代碼 const uniqueItems = arr => [...new Set(arr)];// 測(cè)試 let arr = [4, 5, 4, 6, 3, 4, 5, 2, 23, 1, 4, 4, 4, 1, 2, 3, 45]; const uniqueItems = arr => [...new Set(arr)]; uniqueItems(arr);作者:莊引 鏈接:https://www.zhihu.com/question/29558082/answer/240560893 來(lái)源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 function uniteUnique() {const list=[].concat(...arguments);return list.reduce((oldlist,nowitem)=>oldlist.includes(nowitem)?oldlist:[...oldlist,nowitem],[]); }作者:知乎用戶(hù) 鏈接:https://www.zhihu.com/question/29558082/answer/237161293 來(lái)源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。神操作
一些輪子
jQuery: $.unique
underscore: _.unique
總結(jié)
以上是生活随笔為你收集整理的数组去重(JavaScript)先从网上整理一波,待验证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦幻西游三维版怎么拍照
- 下一篇: Spring Data ElasticS