zoukankan      html  css  js  c++  java
  • Javascript中的集合

    集合是由一组无序且唯一(即不能重复)的项组成

    function Set() {
            var items={};
            this.has=function(value){
              //return value in items;
              return this.hasOwnProperty(value);
            }
            this.add=function (value) {
              if(!this.has(value)){
                items[value]=value;
                return true;
              }
              return false;
            }
            this.remove=function(value){
              if(this.has(value)){
                delete items[value];
                return true;
              }
              return false;
            }
            this.clear=function(){
              items={};
            }
            this.size=function(){
              return Object.keys(items).length;
            }
            this.sizeLegacy=function(){
              var count=0;
              for (var prop in items) {
                if (items.hasOwnProperty(prop)) {
                  ++count;
                }
              }
            }
            this.values=function () {
              return Object.keys(items);
            }
            this.valuesLagacy=function () {
              var keys=[];
              for (var key in items) {
                if (items.hasOwnProperty(key)) {
                    keys.push(key);
                }
              }
              return keys;
            }
            //并集
            this.union=function(otherSet) {
              var unionSet=new Set();
              var values=this.values();
              for (var i = 0; i < values.length; i++) {
                unionSet.add(values[i]);
              }
              values=otherSet.values();
              for (var i = 0 i < values.length; i++) {
                unionSet.add(values[i]);   
              }
              return unionSet;
            }
            // 交集
            this.intersection=function (otherSet) {
              var intersectionSet=new Set();
              var values=this.values();
              for (var i = 0; i < values.length; i++) {
                if (otherSet.has(values[i])) {
                  intersectionSet.add(values[i])
                }
              }
              return intersectionSet;
            }
            // 差集
            this.difference=function(otherSet){
              var differenceSet=new Set();
              var values=this.values();
              for (var i = 0; i < values.length; i++) {
                if (!otherSet.has(values[i])) {
                  differenceSet.add(values[i]);
                }
              }
              return differenceSet;
            }
            // 子集
            this.isSubsetOf=function(otherSet){
              if(this.size()>otherSet.size()){
                return false;
              }else{
                var values=this.values();
                for (var i = 0; i < values.length; i++) {
                  if(!otherSet.has(values[i])){
                    return false;
                  }
                }
                return true;
              }
            }
    }
    

      

  • 相关阅读:
    动态规划最大利润的问题
    【转】mysql基础汇总
    mac使用frida
    Mac 下python3 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法
    mac使用jadx逆向app
    python桶排序代码
    requests_html使用asyncio
    async for的使用
    [转载]微信企业号:企业客户的移动应用入口
    微信服务号、订阅号、企业号差别
  • 原文地址:https://www.cnblogs.com/BaiGuodong/p/javascript-collection-set.html
Copyright © 2011-2022 走看看