数据结构-集合

2021-07-22  本文已影响0人  AAA前端

集合

集合通常是由一组无序的, 不能重复的元素构成。

ES6 中的 Set 其实就已经实现了集合

    // 封装集合的构造函数
    function Set() {
        // 使用一个对象来保存集合的元素
        this.items = {}

        // 集合的操作方法
        // 判断集合中是否有某个元素
        Set.prototype.has = function (value) {
            return this.items.hasOwnProperty(value)
        }

        // 向集合中添加元素
        Set.prototype.add = function (value) {
            // 1.判断集合中是否已经包含了该元素
            if (this.has(value)) return false

            // 2.将元素添加到集合中
            this.items[value] = value
            return true
        }

        // 从集合中删除某个元素
        Set.prototype.remove = function (value) {
            // 1.判断集合中是否包含该元素
            if (!this.has(value)) return false

            // 2.包含该元素, 那么将元素删除
            delete this.items[value]
            return true
        }

        // 清空集合中所有的元素
        Set.prototype.clear = function () {
            this.items = {}
        }

        // 获取集合的大小
        Set.prototype.size = function () {
            return Object.keys(this.items).length

            /*
            考虑兼容性问题, 使用下面的代码
            var count = 0
            for (var value in this.items) {
                if (this.items.hasOwnProperty(value)) {
                    count++
                }
            }
            return count
            */
        }

        // 获取集合中所有的值
        Set.prototype.values = function () {
            return Object.keys(this.items)

            /*
            考虑兼容性问题, 使用下面的代码
            var keys = []
            for (var value in this.items) {
                keys.push(value)
            }
            return keys
            */
        }
    }

上一篇下一篇

猜你喜欢

热点阅读