candplus
candplus
发布于 3周前

JavaScript删除数组里重复的元素

JavaScript里有多种方法可以用来对数组元素去重。

ES6 Set

ES6提供了一个Set对象,用它可以很简单便可以对数组元素去重。

function uniq(arr) {
   return Array.from(new Set(arr));
}

filter

另外也可以通过filter来对数组元素去重。

function uniq(arr) {
  return arr.filter(function(item, pos,self) {
    return self.indexOf(item) == pos;
  });
}

这种方法很简单,如果是对于大数组,效率相对低。

改进版

function uniq(arr) {
    var seen = {};
    return arr.filter(function(item) {
        return seen.hasOwnProperty(item) ? false : (seen[item] = true);
    });
}

注意:使用hasOwnProperty不能用于对象数据,如{name:"张三"}和{name:"李四"},hasOwnProperty返回的都为true。

此方法用于基本类型,如boolean,number,string是没有问题。