Javascipt数组去重

一、利用ES6 Set去重

1
function unique(arr) {
2
   return Array.from(new Set(arr));
3
 }

二、利用for嵌套for,然后splice去重

1
function unique(arr) {
2
  for (var i = 0; i < arr.length; i++) {
3
    for (var j = i + 1; j < arr.length; j++) {
4
      if (arr[i] === arr[j]) {
5
        arr.splice(j, 1);
6
        j--;
7
      }
8
    }
9
  }
10
  return arr;
11
}

三、利用indexOf去重

1
function unique(arr) {
2
  var array = [];
3
  for (var i = 0; i < arr.length; i++) {
4
    if (array.indexOf(arr[i]) === -1) {
5
      array.push(arr[i]);
6
    }
7
  }
8
  return array;
9
}

四、利用sort()

1
function unique(arr) {
2
  arr = arr.sort();
3
  var array = [arr[0]];
4
  for (var i = 1; i < arr.length; i++) {
5
    if (arr[i] !== arr[i - 1]) {
6
      array.push(arr[i]);
7
    }
8
  }
9
  return array;
10
}

五、利用includes

1
function unique(arr) {
2
  var array = [];
3
  for (var i = 0; i < arr.length; i++) {
4
    if (!array.includes(arr[i])) {
5
      array.push(arr[i]);
6
    }
7
  }
8
  return array;
9
}

六、利用filter

1
function unique(arr) {
2
  return arr.filter(function(item, index, arr) {
3
    return arr.indexOf(item, 0) === index;
4
  });
5
}

七、利用递归去重

1
function unique(arr) {
2
  var array = arr;
3
  var len = array.length;
4
  array.sort(function (a, b) {
5
    return a - b;
6
  });
7
8
  function loop(index) {
9
    if (index >= 1) {
10
      if (array[index] === array[index - 1]) {
11
        array.splice(index, 1);
12
      }
13
      loop(index - 1); //递归loop,然后数组去重
14
    }
15
  }
16
17
  loop(len - 1);
18
  return array;
19
}

八、利用Map数据结构去重

1
function unique(arr) {
2
  let map = new Map();
3
  let array = []; //数组用于返回结果
4
  for(let i = 0; i < arr.length; i++) {
5
    if(map.has(arr[i])) {
6
      map.set(arr[i],true);
7
    }else {
8
      map.set(arr[i],false); //如果没有该key值;
9
      array.push(arr[i]);
10
    }
11
  }
12
  return array;
13
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!