數組去重方法大全

1.使用for循環加indexOf數組

 

    var arr=[1,1,2,2,3,3];
        var arr2=[];
        for(var i=0;i<arr.length;i++){
            if(arr2.indexOf(arr[i])==-1){
                arr2.push(arr[i]);
            }
        }
        console.log(arr2);

2.使用for循環加includesspa

 

     var arr=[1,1,2,2,3,3];
        var arr2=[];
        for(var i=0;i<arr.length;i++){
            if(!arr2.includes(arr[i])){
                arr2.push(arr[i]);
            }
        }
        console.log(arr2);

3.使用ES6中的set對象code

Set 對象容許你存儲任何類型的惟一值,不管是原始值或者是對象引用。對象

Set 中的特殊值

Set 對象存儲的值老是惟一的,因此須要判斷兩個值是否恆等。有幾個特殊值須要特殊對待:blog

  • +0 與 -0 在存儲判斷惟一性的時候是恆等的,因此不重複;
  • undefined 與 undefined 是恆等的,因此不重複;
  • NaN 與 NaN 是不恆等的,可是在 Set 中只能存一個,不重複。
var arr=[1,1,2,2,3,3];
        var s=new Set(arr);
        console.log(...s);

4.兩個數組合並去重,使用filter()方法加indexOf()方法索引

 

filter()方法  檢測數值元素,並返回符合條件全部元素的數組。it

indexOf() 方法可返回數組中某個指定的元素位置。io

該方法將從頭至尾地檢索數組,看它是否含有對應的元素。開始檢索的位置在數組 start 處或數組的開頭(沒有指定 start 參數時)。若是找到一個 item,則返回 item 的第一次出現的位置。開始位置的索引爲 0。console

若是在數組中沒找到指定元素則返回 -1。for循環

 

function distinct(a,b){
            let arr=a.concat(b);
            return arr.filter((item,index)=>{
                return arr.indexOf(item)===index
            })
        }
        var arr=[1,2,3,4,5];
        var arr2=[1,12,13,14,15];
        console.log(distinct(arr,arr2));

 5.找出數組中重複的值

 

 function duplicates(arr) {
            //聲明兩個數組,a數組用來存放結果,b數組用來存放arr中每一個元素的個數
            var a = [],
                b = [];
            //遍歷arr,若是以arr中元素爲下標的的b元素已存在,則該b元素加1,不然設置爲1
            for (var i = 0; i < arr.length; i++) {
                if (!b[arr[i]]) {
                    b[arr[i]] = 1;
                    continue;
                }
                b[arr[i]]++;
            }
            //遍歷b數組,將其中元素值大於1的元素下標存入a數組中
            for (var i = 0; i < b.length; i++) {
                if (b[i] > 1) {
                    a.push(i);
                }
            }
            return a;
        }
        console.log(duplicates([1,2,4,4,3,3,1,5,3]));
相關文章
相關標籤/搜索