JavaScript实现数据结构与算法(三)哈希表

(二)哈希表

学习笔记:coderwhy的JavaScript实现数据结构与算法的课程

2. 集合

2.1 集合的特点

在这里插入图片描述
在这里插入图片描述

2.2 JavaScript的封装方法

在这里插入图片描述

2.2 集合常见操作

在这里插入图片描述
在这里插入图片描述

2.3 集合的封装常见操作的代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>封装集合</title>
</head>
<body>
<script>
    // 封装集合类
    function Set() {
        // 属性
        this.items = {}  // 使用了js的object对象
        // 方法
        // add 方法
        Set.prototype.add = function (value) {
            // 判断集合中是否已经包含了该元素
            if(this.has(value)){
                return false; // 添加失败
            }else {
                // 将元素添加到集合中
                this.items[value] = value; // 这里是把属性和属性值都设置为要添加的元素
                return true;
            }
        } ;
        // has方法
        Set.prototype.has = function (value) {
            return this.items.hasOwnProperty(value);
        };
        // remove方法
        Set.prototype.remove = function (value) {
            // 1. 该集合中是否包含该元素
            if(!this.has(value)){
                return false;
            }else{
                // 2. 将元素从属性中删除
                delete this.items[value];
                return true;
            };

        };
        // clear 方法
        Set.prototype.clear = function () {
            this.items = {}
        };

        // size方法
        Set.prototype.size = function () {
            return Object.keys(this.items).length;
        };

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

    // 测试Set类

    // 1. 创建Set类对象
    var set = new Set();

    // 2. 添加元素
    alert(set.add('abc'));
    alert(set.add('abc'));
    alert(set.add('cba'));
    alert(set.add('nba'));
    alert(set.add('mba'));
    alert(set.values());

    // 3. 删除元素
    alert(set.remove('mba'));
    alert(set.remove('mba'));
    alert(set.values());

    // 4. has方法
    alert(set.has('abc'));
    alert(set.has('aaabc'));

    // 5. 获取元素的个数
    alert(set.size());

    // 6. clear 方法
    set.clear();
    alert(set.size());
</script>
</body>
</html>
发布了17 篇原创文章 · 获赞 0 · 访问量 663

猜你喜欢

转载自blog.csdn.net/weixin_43545225/article/details/104301966
今日推荐