数组去重的方法

时间:2021-04-25 20:42:48

 方法一:利用

function arrRepeat(arr) {
    let obj = {};
    let newArray = [];
    for(let i = 0; i < arr.length; i++) {
      if(!obj.hasOwnProperty(arr[i])) {
          obj[arr[i]] = i;
        newArray.push(arr[i]);
    }
  }
  return newArray
}
console.log(arrRepeat([1,2,1,3,5,'','',3,6,'q','a','q','a']))      //[1, 2, 3, 5, "哈", 6, "q", "a"]

方法二:利用ES6的set

Set数据结构,它类似于数组,其成员的值都是唯一的。

利用Array.from将Set结构转换成数组

function dedupe(array){
 return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]

拓展运算符(...)内部使用for...of循环

let arr = [1,2,3,3];
let resultarr = [...new Set(arr)]; 
console.log(resultarr); //[1,2,3]

方法三: 双循环

双层循环,外层循环元素,内层循环时比较值如果有相同的值则跳过,不相同则push进数组
 function arrRepeat(arr){
  let result = [],
  i,
  j,
  len = arr.length;
 for(i = 0; i < len; i++){
  for(j = i + 1; j < len; j++){
   if(arr[i] === arr[j]){
    j = ++i;
   }
  }
  result.push(arr[i]);
 }
 return result;
}
console.log(arrRepeat([1,2,1,3,5,'','',3,6,'q','a','q','a']))  // [2, 1, 5, "哈", 3, 6, "q", "a"]