js 數組去重

一、前言

去重方法千千萬萬,你要哪種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;
}

六、結語

去重的方式還有不少,等待你去探索。。。

相關文章
相關標籤/搜索