• 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;
    }());


  • 相关阅读:
    Telink TLSR825x系列SDK增加串口打印log功能
    Telink BDT和烧录器EVK的使用
    Telink SDK IDE开发环境中函数链接跳转异常和实际编译项目显示灰色问题的解决
    Telink SDK 的编译设置(以825x系列的一个SDK为例)
    Telink IDE的下载和SDK的导入
    Git项目管理出现 .gitignore文件不起作用的解决
    char和signed char不同编译器下的使用反思
    动态内存的分配
    结构体和联合体
    C语言中利用clock设计一个简单的定时器
  • 原文地址:https://www.cnblogs.com/EternalZH/p/12213830.html
Copyright © 2020-2023  润新知