首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

最基本的去重方法

2024-12-18 来源:化拓教育网

思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。

var arr1=[1,2,3,2,1];
function unique1(arr){
  var res = [arr1[0]];
  for(var i=1;i<arr1.length;i++){
    var repeat = false;
    for(var j=0;j<res.length;j++){
      if(arr1[i] == res[j]){
        repeat = true;
        break;
      }
    }
    if(!repeat){
      res.push(arr1[i]);
    }
  }
  return res;
}
console.log(unique1(arr1));

先排序在去重
思路:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组

var arr2=[1,2,3,2,1];
function unique2(arr){
  var arr2 = arr.sort();
  var res = [arr2[0]];
  for(var i=1;i<arr2.length;i++){
    if(arr2[i] !== res[res.length-1]){
      res.push(arr2[i]);
    }
  }
  return res;
}
console.log(unique2(arr2));

利用对象的属性去重(推荐)
思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复

var arr3=[1,2,3,4,5,4,3,2,1];
function unique3(arr3){
  var res =[];
  var json = {};
  for(var i=0;i<arr3.length;i++){
    if(!json[arr3[i]]){
      res.push(arr3[i]);
      json[arr3[i]] = 1;
    }
  }
  return res;
}
console.log(unique3(arr3));

利用下标查询

var arr4=[1,2,3,4,5,4,3,2,1];
function unique4(arr){
  var newArr = [arr4[0]];
   for(var i=1;i<arr4.length;i++){
    if(newArr.indexOf(arr4[i]) == -1){
   newArr.push(arr4[i]);
   }
}
return newArr;
}
console.log(unique4(arr4));

ES6的方法

let arr1=([1,1,2,3]);
let newArr1=Array.from(new Set(arr1));
console.log(newArr1);

let arr2 = [1,2,3,3];
let newArr2 = [...new Set(arr2)];
console.log(newArr2);

let arr3 = [1, 2, 3, 2, 1];
function newArr3(arr3){
return Array.from(new Set(arr3));
}
console.log(newArr3(arr3));

显示全文