zoukankan      html  css  js  c++  java
  • 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;
    }());


  • 相关阅读:
    Devexpress treeList
    sql rowversion
    2015年8月9日 开始 devsxpress 学习
    定时执行任务
    Dexpress 中 grid的使用
    新版 itextsharp pdf code
    jquery ui 中的插件开发
    Centos7下git服务器及gogs部署
    JAVA(TOMCAT)远程调试
    分布式文件系统笔记(慢慢补充)
  • 原文地址:https://www.cnblogs.com/EternalZH/p/12213830.html
Copyright © 2011-2022 走看看