• 集合的实现


        function Set() {
            this.dataStore = [];
            this.add = add;
            this.remove = remove;
            this.show = show;
    
            this.contains = contains;
            this.union = union;
            this.intersect = intersect;
    
            this.size = size;
            this.subset = subset;
    
            this.difference = difference;
        }
        function add(data) {
            if (this.dataStore.indexOf(data) < 0) {
                this.dataStore.push(data);
                return true;
            } else {
                return false;
            }
        }
        function remove(data) {
            var pos = this.dataStore.indexOf(data);
            if (pos > -1) {
                this.dataStore.splice(pos, 1);
                return true;
            } else {
                return false;
            }
        }
        function show() {
            return this.dataStore;
        }
        var names = new Set();
        names.add("David");
        names.add("Jennifer");
        names.add("Mike");
        names.add("Raymond");
        if (names.add("Mike")) {
            document.write("Mike added" + "<br />")
        } else {
            document.write("Can't add Mike, must already be in set" + "<br />");
        }
        document.write(names.show() + "<br />");
        var removed = "Mike";
        if (names.remove(removed)) {
            document.write(removed + " removed." + "<br />");
        } else {
            document.write(removed + " not removed." + "<br />");
        }
        names.add("Clayton");
        document.write(names.show() + "<br />");
        document.write("****************" + "<br />");
    
        function contains(data) {
            if (this.dataStore.indexOf(data) > -1) {
                return true;
            } else {
                return false;
            }
        }
        function union(set) {//并操作
            var tempSet = new Set();
            for ( var i = 0; i < this.dataStore.length; ++i) {//this指的是cis
                tempSet.add(this.dataStore[i]);//将cis集合添加到tempSet临时集合
            }
            for ( var i = 0; i < set.dataStore.length; ++i) {
                if (!tempSet.contains(set.dataStore[i])) {//判断临时集合中是否包含dmp集合中的元素
                    tempSet.dataStore.push(set.dataStore[i]);
                    //tempSet.add(set.dataStore[i]);
                }
            }
            return tempSet;
        }
    
        var cis = new Set();
        cis.add("Mike");
        cis.add("Clayton");
        cis.add("Raymond");
        var dmp = new Set();
        dmp.add("Raymond");
        dmp.add("Clayton");
        var it = new Set();
        it = cis.union(dmp);
        document.write(it.show() + "<br />");
        document.write("****************" + "<br />");
    
        function intersect(set) {//交操作
            var tempSet = new Set();
            for ( var i = 0; i < this.dataStore.length; ++i) {
                if (set.contains(this.dataStore[i])) {
                    tempSet.add(this.dataStore[i]);
                }
            }
            return tempSet;
        }
        it = cis.intersect(dmp);
        document.write(it.show() + "<br />");
        document.write("****************" + "<br />");
    
        function size() {
            return this.dataStore.length;
        }
        function subset(set) {
            if (this.size() > set.size()) {
                return false;
            } else {
                for ( var member in this.dataStore) {
                    if (!set.contains(this.dataStore[member])) {
                        return false;
                    }
                }
            }
            return true;
        }
        if (it.subset(dmp)) {//判断it集合是否包含于dmp集合
            document.write("IT is a subset of DMP.");
        } else {
            document.write("IT is not a subset of DMP.");
        }
        document.write("<br />");
        document.write("****************" + "<br />");
    
        function difference(set) {//返回一个属于第一个集合但不属于第二个集合的新集合 
            var tempSet = new Set();
            for ( var i in this.dataStore) {
                if (!set.contains(this.dataStore[i])) {
                    tempSet.add(this.dataStore[i]);
                }
            }
            return tempSet;
        }
        it = cis.difference(dmp);
        document.write(it.show());
        /*上述程序运行的结果如下:
        Can't add Mike, must already be in set
        David,Jennifer,Mike,Raymond
        Mike removed.
        David,Jennifer,Raymond,Clayton
         ****************
        Mike,Clayton,Raymond
         ****************
        Clayton,Raymond
         ****************
        IT is a subset of DMP.
         ****************
        Mike */
  • 相关阅读:
    inspector元素定位[wda-facebook]
    pip下载 requirements.txt
    APP运行出现闪退
    安卓的webview报错
    深度强化学习入门笔记
    强化学习入门笔记
    如何将本地代码上传到GitHub
    Sublime插件Emmet的错误及Tab补全代码
    flask的url错误
    计算输出特征图的空间尺寸
  • 原文地址:https://www.cnblogs.com/feile/p/5389059.html
Copyright © 2020-2023  润新知