去重方法千千萬萬,你要哪種es6
二、es系列方法
2.一、es6 Set()方法數組
介紹:ES6提供了新的數據結構Set。它相似於數組,可是成員的值都是惟一的,沒有重複的值。
Set函數能夠接受一個數組(或相似數組的對象)做爲參數,用來初始化數據結構
new Set(test);//test爲去重的數組
2.二、es7 includes函數
Array.prototype.includes方法返回一個布爾值,表示某個數組是否包含給定的值,與字符串的includes方法相似。該方法屬於 ES7 ,但 Babel 轉碼器已經支持post
unique4 (arr) { let newArr = [arr[0]]; for(index of arr){ if(!newArr.includes(index)){ newArr.push(index); } } return newArr; }
三、常規去重
思路:spa
- 構建一個新的數組存放結果,設置狀態值
- 從原數組中循環取出一個元素,與結果數組對比
- 若結果數組中沒有該元素,則改變狀態值
- 經過判斷狀態值進行結果數組的存儲
核心代碼:prototype
unique1 (arr) { let newArr = [arr[0]];//現將第一個數加入到新數組中; arr.shift(); let result = true;//判斷是否重複,默認不存在重複true for(index of arr) { for(res of newArr) { if(res === index){ result = false;//存在重複改變狀態值 break; } } if(result){ newArr.push(index);//不存在重複則加入新數組 } result = true;//循環解析從新改變狀態值 } return newArr; },
三、排序去重
思路:code
- 對數組進行排序(因爲打亂了數組結構,不適用於須要保留原數組順序的)
- 判斷第 i 個數組元素是否和 i-1 個數組元素相同,
- 若是不相同,則表示新數組中不存在該元素,能夠加入
核心代碼:對象
unique2 (arr) { arr.sort();//對數組進行排序 let newArr = [arr[0]];//現將第一個數加入到新數組中;這裏移除 let len = arr.length; //跳過數組第一個元素,從第二個開始 for(let i = 1; i < len; i++) { //若是先後不相同,則不存在重複 if(arr[i] !== arr[i-1]) { newArr.push(arr[i]); } } return newArr; },
五、對象去重blog
思路:
- 建立一個新數組存儲結果,空對象將這個值做爲屬性並賦值,進行存儲
- 循環取出數組元素去對象中訪問對應屬性,
- 若是存在則重複,不能加入數組
核心代碼:
unique3 (arr) { let newArr = []; let newObj = {};//定義一個對象,經過對象來獲取值 for(index of arr) { //若是這個屬性不存在,則能夠加入數組,並複製 if(!newObj[index]) { newArr.push(index); newObj[index] = 1; } } return newArr; }
六、結語
去重的方式還有不少,等待你去探索。。。