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是没有问题。

版权声明:著作权归作者所有。

相关推荐

JavaScript监控元素外的点击事件隐藏元素

监控document的点击事件,使用jquery的closet排除指定元素以及其子元素的点击事件。function hideOnClickOutside(selector) {   $(document).on('click',function(event){     if (!$(event.target)

MySQL删除重复的行,保留其中一行

示例有这样一个表CREATE TABLE `tests` (  `id` int(11) DEFAULT NULL,  `name` varchar(20) DEFAULT NULL ) ; 现在需要删除重复name的行,但保留其中一行。方法一:保留id小的一行DELETE n1