• unique:数组去重,返回一个新数组


    function unique(arr){    
      if(!isArrayLink(arr)){ //不是类数组对象

        return arr

      }

      let result = []

      let objarr = []

      let obj = Object.create(null)

      arr.forEach(item => {

        if(isStatic(item)){//是除了symbol外的原始数据

          let key = item + '_' + getRawType(item);

          if(!obj[key]){

            obj[key] = true

            result.push(item)

          }

        }else{//引用类型及symbol

          if(!objarr.includes(item)){

            objarr.push(item)

              result.push(item)

          }

        }

      })

      return resulte
    }


    Set简单实现

    window.Set = window.Set || (function () {    
      function Set(arr) {

        this.items = arr ? unique(arr) : [];

        this.size = this.items.length; // Array的大小

      }

      Set.prototype = {

        add: function (value) {

          // 添加元素,若元素已存在,则跳过,返回 Set 结构本身。

          if (!this.has(value)) {

            this.items.push(value);

            this.size++;

          }

          return this;

        },

        clear: function () {

          //清除所有成员,没有返回值。

          this.items = []

          this.size = 0

        },

        delete: function (value) {

          //删除某个值,返回一个布尔值,表示删除是否成功。

          return this.items.some((v, i) => {

            if(v === value){

              this.items.splice(i,1)

              return true

            }

            return false

          })

        },

        has: function (value) {

          //返回一个布尔值,表示该值是否为Set的成员。

          return this.items.some(v => v === value)

        },

        values: function () {

          return this.items

        },

      }

      return Set;
    }());


  • 相关阅读:
    hadoop优点和缺点
    HDFS的基本shell操作,hadoop fs操作命令
    HDFS的java操作方式
    HDFS的体系结构和操作
    windows主机无法访问服务器
    用公共key实现无密码ssh
    hadoop2的伪分布部署
    lsof/fuser卸载挂载文件
    编译Apache Hadoop2.2.0源代码
    三十分钟掌握STL
  • 原文地址:https://www.cnblogs.com/EternalZH/p/12213830.html
Copyright © 2020-2023  润新知