js 数组去重

1、
function unique(a) {
  var res = [];
 
  for (var i = 0, len = a.length; i < len; i++) {
    var item = a[i];
 
    for (var j = 0, jLen = res.length; j < jLen; j++) {
      if (res[j] === item)
        break;
    }
 
    if (j === jLen)
      res.push(item);
  }
 
  return res;
}
 
var a = [1, 1, '1', '2', 1];
var ans = unique(a);
console.log(ans); // => [1, "1", "2"]
2、
function unique(a) {
  var res = [];
 
  for (var i = 0, len = a.length; i < len; i++) {
    var item = a[i];
 
    (res.indexOf(item) === -1) && res.push(item);
  }
 
  return res;
}
 
var a = [1, 1, '1', '2', 1];
var ans = unique(a);
console.log(ans); // => [1, "1", "2"]
3、
function unique(a) {
 
  var res = a.filter(function(item, index, array) {
    return array.indexOf(item) === index;
  });
  
  return res;
}
 
 
var a = [1, 1, '1', '2', 1];
var ans = unique(a);
console.log(ans); // => [1, "1", "2"]
4、
function unique(a) {
  var res = [];
 
  for (var i = 0, len = a.length; i < len; i++) {
    for (var j = i + 1; j < len; j++) {
      // 这一步十分巧妙
      // 如果发现相同元素
      // 则 i 自增进入下一个循环比较
      if (a[i] === a[j])
        j = ++i;
    }
 
    res.push(a[i]);
  }
 
  return res;
}
 
 
var a = [1, 1, '1', '2', 1];
var ans = unique(a);
console.log(ans); // => ["1", "2", 1]

5、
function unique(a) {
  return a.concat().sort().filter(function(item, pos, ary) {
    return !pos || item != ary[pos - 1];
  });
}
 
 
var a = [1, 1, 3, 2, 1, 2, 4];
var ans = unique(a);
console.log(ans); // => [1, 2, 3, 4]
6、
function unique(a) {
  var seen = {};
 
  return a.filter(function(item) {
    return seen.hasOwnProperty(item) ? false : (seen[item] = true);
  });
}
 
 
var a = [1, 1, 3, 2, 1, 2, 4];
var ans = unique(a);
console.log(ans); // => [1, 3, 2, 4]
7、


function unique(a) {
  var ret = [];
  var hash = {};
 
  for (var i = 0, len = a.length; i < len; i++) {
    var item = a[i];
 
    var key = typeof(item) + item;
 
    if (hash[key] !== 1) {
      ret.push(item);
      hash[key] = 1;
    }
  }
 
  return ret;
}
 
 
var a = [1, 1, 3, 2, '4', 1, 2, 4, '1'];
var ans = unique(a);
console.log(ans); // => [1, 3, 2, "4", 4, "1"]
8、
function unique(a) {
  return Array.from(new Set(a));
}
 
var a = [{name: "hanzichi"}, {age: 30}, new String(1), new Number(1)];
var ans = unique(a);
console.log(ans); // => [Object, Object, String, Number]
原文地址:https://www.cnblogs.com/chenjinxinlove/p/5579153.html