zoukankan      html  css  js  c++  java
  • (js描述的)数据结构[集合结构](6)

    (js描述的)数据结构[集合结构](6)

    一.集合结构特点

    1.集合中的元素不能重复。
    2.集合是无序的。

    二.集合的代码实现

    function Set() {
                this.items = {}
    
                //1. add方法
                Set.prototype.add = function(value) {
                    //判断集合中是否包含元素
                    if (this.has(value)) {
                        return false
                    }
                    //把数据添加到集合中
                    this.items[value] = value
                    return true
                }
                // 2.has方法
                Set.prototype.has = function(value) {
                    return this.items.hasOwnProperty(value)
                }
                // 3.remove方法
                Set.prototype.remove = function(value) {
                    if (!this.has(value)) {
                        return false
                    }
                    delete this.items[value]
                    return true
                }
                // 4.clear方法
                Set.prototype.clear = function() {
                    this.items = {}
                }
                // 5.size方法
                Set.prototype.size = function() {
                    return Object.keys(this.items).length
                }
                // 6.获取集合中所有的值
                Set.prototype.values = function() {
                    return Object.keys(this.items)
                }
                
                // 集合间的操作
                // 1. union方法
                Set.prototype.union = function(other) {
                	var newSet = new Set()
                    var values = this.values()
                    for (var i = 0; i< values.length; i++) {
                        newSet.add(values[i])
                    }
                    values = other.values()
                    for (var i = 0; i< values.length ; i++) {
                            newSet.add(values[i])
                    }
                    return newSet
                }
                // 2.interSection方法
                Set.prototype.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
                }
                // 3.difference方法
                Set.prototype.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
                }
                // 4.subSet方法
                Set.prototype.subSet = function(otherSet) {
                    var values = this.values()
                    for (var i = 0; i< values.length; i++) {
                        if (!otherSet.has(values[i])) {
                            return false
                        }
                    }
                    return true
                }
            }
    
  • 相关阅读:
    并发系列64章(异步编程三)第四章
    并发系列64章(异步编程二)第三章
    并发系列64章(异步编程)第二章
    sql 语句系列(记录时间差)[八百章之第十八章]
    sql 语句系列(两个日期之间)[八百章之第十七章]
    sql 语句系列(计算的进阶)[八百章之第十六章]
    sql 语句系列(众数中位数与百分比)[八百章之第十五章]
    [转]迅速提升三倍你的工作效率
    漫谈碎片化学习(Fragmentation learning)
    [转]禅修程序员十诫
  • 原文地址:https://www.cnblogs.com/jackson1/p/12682673.html
Copyright © 2011-2022 走看看