zoukankan      html  css  js  c++  java
  • 数组去重的两种方法

    数组去重的方法有很多,每个人都有自己喜欢用的方法,这里说两种我自己觉得比较简洁高效的方法,当然很多人都知道这些。

    方法一

    Array.prototype.unique = function(){
        var obj = {};
        var arr = [];
        var len = this.length;
    
        for(var i=0;i<len;i++){
            if(!obj[this[i]]){
                obj[this[i]] = 'a';
                arr.push(this[i]);
            }
        }
    
        return arr;
        
    }

    此方法利用对象属性名不能重复的性质,将数组值遍历到对象的属性上,如果属性名的属性值已存在,则忽略,如果属性值不存在,则添加新属性,并赋值(注意赋的值不能为假),然后将这个属性名push到新数组里,遍历结束,返回新数组。

    方法二

    Array.prototype.unique = function(){
        return Array.from(new Set(this))
    }

    ES6的出现使代码简洁高效了很多,这里用到两种ES6的方法。

    ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

    同时ES6为数组新增了Array.from方法,用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

    new Set可以将数组转化为Set数据结构,并去重,如:

    new Set([1,2,3,3])
    
    //{1, 2, 3}

    再用Array.from将Set转回为数组

     

  • 相关阅读:
    基于视网膜虹膜识别的内容分级系统
    C# 反射详解一
    C# 委托浅析
    .Net Core中使用Dapper构建泛型仓储
    C# 泛型详解
    非对称可逆加密RSA
    对称可逆加密Des
    .NET Core 3.0 中间件 Middleware
    .NET Core3.0 日志 logging
    .Net Core3.0依赖注入DI
  • 原文地址:https://www.cnblogs.com/wjaaron/p/8277884.html
Copyright © 2011-2022 走看看