处理集合_通过对象模拟Set

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>通过对象模拟Set</title>
    <script src="../unitl/test.js"></script>
    <style>
        #results li.pass {color:green;}
        #results li.fail {color:red;}
    </style>


</head>

<body>


    <div id="firstElement"></div>
    <div id="secondElement"></div>
    <ul id="results"></ul>


</body>

<script>


    function Set() {


        this.data = {},
        this.length = 0;

    }


    //检查元素是否已经存在
    Set.prototype.has = function(item) {

        return typeof this.data[item] !== "undefined";

    };


    //当set中不存在元素
    Set.prototype.add = function(item) {
        if(!this.has(item)){
            this.data[item] = true;
            this.length++;
        }
    };


    //如果set中已经存在元素,则删除。
    Set.prototype.remove = function(item) {
        if(this.has(item)) {
            delete this.data[item];
            this.length--;

        }

    }


    //试图添加两次Hattori
    const ninjas = new Set();
    ninjas.add("Hattori");
    ninjas.add("Hattori");


    console.log(ninjas.length);



    assert(ninjas.has("Hattori") && ninjas.length ===1,"Our set contains only one Hattori");
    ninjas.remove("Hattori");

    assert(!ninjas.has("Hattori") && ninjas.length === 0,"Our set is now empty!");

</script>
</html>

本例子中引入的js: test.js

显示了如何通过对象模拟Set的简单示例,使用对象存储数据,持续跟中集合中的元素,提供了3个方法,has,验证集合中是否存在元素,add,如果集合中不存在元素则将元素添加到集合中,
remove删除集合中已经存在的元素。

原文地址:https://www.cnblogs.com/jamal/p/14085068.html