天天看点

数组遍历去重复元素方式

数组 去除重复元素 的三种方法

方法一:

        两层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

       */