实现set

class mySet {
    constructor() {
        this.items={};//js对象不允许一个键指向两个不同的属性→保证集合里元素都是唯一的
    }
    //判断集合中是否存在val元素
    has(val) {
        return this.items.hasOwnProperty(val);
    }
    //向集合中添加元素
    add(val) {
        if(!this.has(val)) {
            this.items[val] = val;
            return true;
        }
        else {
            return false;
        }
    }
    //删除集合中的指定元素
    remove(val) {
        if(this.has(val)) {
           delete this.items[val];
        }
    }
    //清空集合中的元素
    clear() {
        this.items={};
    }
    //集合的大小
    size() {
        /*Object.keys()返回给定对象所有可枚举属性的字符串数组*/
        return Object.keys(this.items).length;
    }
    //获取集合中的所有元素
    values(){
        let res=[];
        Object.keys(this.items).forEach(item=>{
            res.push(this.items[item]);
        })
        return res;
    }
}

var set = new mySet();
set.add(3);
set.add(1);
set.add(7);
set.add(0);
console.log(set.size()); //输出4
set.remove(3);
console.log(set.values()); //输出[ 0, 1, 7 ]
console.log(set.has(5)); //输出false
set.clear();
console.log(set.size()); //输出0
powered by Gitbook最后修订时间: 2020-05-25 12:05:24

results matching ""

    No results matching ""