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

  • Post author:
  • Post category:其他




方法一:


两层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]));



方法二:


准备一个新空数组,将需要去重的数组进行遍历,判断新数组中是否有当前元素,若没有,这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]));



版权声明:本文为Janicecat原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。