数组去重

  1. 方法一
function unique(arr) {
  for(var i = 0; i < arr.length; i++) {
    for(var j = 0; j < i; j++) {
      if(arr[i] === arr[j]) {
        arr.splice(i, 1);
        i--;
        break;
      }
    }
  }
  return arr;
}
  • 缺点:不能区分NaN,将arr[i] === arr[j]改为Object.is(arr[i], arr[j])之后,可以区分NaN,但兼容性没有之前的好
  1. 方法二
function unique(arr) {
  var res = [];
  for(var i = 0; i < arr.length; i++) {
    if(res.indexOf(arr[i]) === -1) {
      res.push(arr[i]);
    }
  }
  return res;
}
  • 缺点:不能区分NaN,将res.indeincludesxOf(arr[i]) === -1改为res.includes(arr[i])之后,可以区分NaN,但兼容性没有之前的好
  1. 方法3:
// 利用es6新增的数据结构Set中没有重复值的特性去重,然后使用...扩展运算符将Set转为Array
function unique(arr) {
  return [...new Set(arr)];
}
  • 缺点:兼容性没有前两个方法好

你可能感兴趣的:(数组去重)