天天看點

數組周遊去重複元素方式

數組 去除重複元素 的三種方法

方法一:

        兩層for循環​​​周遊​​:

第一次周遊​​數組​​中的每一個元素 arr[i]

第二層周遊數組目前元素後的所有元素 arr[j],與目前元素相比較,若 == 目前元素,則删除arr[j],并将循環回退一步(删除元素後,會發生變化)

function unique(arr) {

     for (var i = 0; i < arr.length; i++) {

       for (var j = i + 1; j < arr.length; j++) {

         if (arr[i] === arr[j]) {

           arr.splice(j, 1);

           j--;

         }

       }

     }

     return arr;

}

console.log(unique([1, 1, 1, 2, 2, 3, 3]));

     console.log("去除數組中的元素方式一")

     var arrs = [1,2,1,3,2,4,5,5,6,7];

          for (var i = 0; i < arrs.length; i++) {

            for (var j = i + 1; j < arrs.length; j++) {

              if (arrs[i] === arrs[j]) {

                arrs.splice(j, 1);

                j--;

              }

            }

          }

    console.log(arrs)

方法二:

        準備一個新空數組,将需要去重的數組進行周遊,判斷新數組中是否有目前元素,若沒有,這push到新數組中

function unique(arr) {

    var newArr = [];

    for (var i = 0; i < arr.length; i++) {

       if (newArr.indexOf(arr[i]) === -1) {

          newArr.push(arr[i]);

       }

    }

    return newArr;

}

console.log(unique([1, 1, 1, 2, 2, 3, 3]));

方法三:

       利用ES标準中的新類型Set

Set類型的對象:是值不能重複的集合

像Set類型對象中添加新值時,如果Set中沒有這個值才能添加進入,如果Set中已經有這個值,則不再添加

Array.from()方法

[...set]也可以

function unique(arr) {

   var set = new Set(arr);

   //方法1:

   return Array.from(set);

   //方法2:把set打散放進去

   var newArr=[...set];

   return newArr;

}

console.log(unique([1, 1, 1, 2, 2, 3, 3]));

方式四去重複方式

const arr = [1, 2, 1, 3, 2, 2, 4, 5, 5, 6, 7]

       // 擷取數組中的元素

       // for(let i=0; i<arr.length; i++){

       //     const index = arr.indexOf(arr[i], i+1)

       //     if(index !== -1){

       //         // 出現重複内容

       //         arr.splice(index, 1)

       //         i--

       //     }

       // }

       // console.log(arr)

       const newArr = []

       for(let ele of arr){

           if(newArr.indexOf(ele) === -1){

               newArr.push(ele)

           }

       }

       console.log(newArr)

       /*  

           有一個數組:

               [9,1,3,2,8,0,5,7,6,4]

           編寫代碼對數組進行排序 --> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

       */