JavaScript 几种数组去重的方法

一.利用for嵌套for,然后splice去重
let arr=[5,5,5,12,12,-3,33,33,35,8];
for( let i=0; i<arr.length;i++){
for(let k=i+1;k<arr.length;k++){
if(arr[i]===arr[k]){
arr.splice(i,1);
i--;
}
}}
console.log(arr)

二.Set方法去重

let arr = [1,2,2,3,4,3,1,6,7,3,5,7];
let s1 = new Set(arr);
let arr2 = [...s1];
console.log(arr2);

三.利用indexOf去重

let arr=[1,2,4,4,5,6,7,7,8,9];
let s = [];  //遍历数组
for(var i = 0;i<arr.length;i++){
if(s.indexOf(arr[i]) == -1){ //判断在s数组中是否存在,不存在则push到s数组中
s.push(arr[i]);
}
}
console.log(s);

四.利用sort去重

let arr=[1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4];
function unique(arr) {
    if (!Array.isArray(arr)) {
        console.log('type error!')
        return;
    }
    arr = arr.sort()
    var arrry= [arr[0]];
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] !== arr[i-1]) {
            arrry.push(arr[i]);
        }
    }
    return arrry;
}
        console.log(unique(arr));

  

五.双重for循环,利用push达到去重效果

let arr=[1,2,4,4,5,6,7,7,8,9];
  let newArr = []
  for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] === arr[j]) {
        i++;
      }
    }
    newArr.push(arr[i])
  }
  console.log(newArr) 

猜你喜欢

转载自www.cnblogs.com/youwei716/p/11146091.html