當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
数组去重(JavaScript)先从网上整理一波,待验证
生活随笔
收集整理的這篇文章主要介紹了
数组去重(JavaScript)先从网上整理一波,待验证
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數組去重(JavaScript)
前端面試題:給定一個數組[1,3,2,4,5,3,22,21,2],去重。
方法很多
- for循環遍歷
- 雙層for循環,存儲到新的數組
- 雙層for循環,不聲明新的數組,在原數組使用splice方法
- 利用對象的屬性唯一(有問題)
- 先排序,然后將第n+1個與第n個比較去重
- ES6語法,set()
- 使用遞歸
- 神操作
- 一些輪子
- 其他,比如包含了字符串,或者數組很大
for循環遍歷
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地址
利用對象的屬性唯一(有問題)
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個與第n個比較去重
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語法,set()
貼一個來自尤雨溪的,網址
// 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 來源:知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。另一個簡潔的
// ES6:一行關鍵代碼 const uniqueItems = arr => [...new Set(arr)];// 測試 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 來源:知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 function uniteUnique() {const list=[].concat(...arguments);return list.reduce((oldlist,nowitem)=>oldlist.includes(nowitem)?oldlist:[...oldlist,nowitem],[]); }作者:知乎用戶 鏈接:https://www.zhihu.com/question/29558082/answer/237161293 來源:知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。神操作
一些輪子
jQuery: $.unique
underscore: _.unique
總結
以上是生活随笔為你收集整理的数组去重(JavaScript)先从网上整理一波,待验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦幻西游三维版怎么拍照
- 下一篇: gradle idea java ssm