您的位置:首页 > Web前端 > JavaScript

js-实现集合的操作

2016-01-12 19:01 681 查看
function Set() {
var items = {};
this.has = function (value) {
return items.hasOwnProperty(value);
};
this.add = function (value) {//添加值
if (!this.has(value)) {
items[value]=value;
return false;
}
};
this.remove = function (value) {//删除某个值
if (this.has(value)) {
delete items[value];
return true;
}
return false;
};
this.clear = function () {//清除
items = {};
};
this.size = function () {
return Object.keys(items).length;
};
this.sizeLegacy = function () {//返回集合中有多少项
var count = 0;
for (var prop in items) {
if (items.hasOwnProperty(prop)) {
++count;
}
}
return count;
};
this.valueLegacy = function () {//输出现有值
var keys = [];
for (var key in items) {
keys.push(key);
}
return keys;
};
this.getItems = function () {
return items;

    };

    this.union = function (otherSet) {//合并集合

        var unionSet = new Set();

        var values = this.values();

        for (var i = 0; i < values.length; i++) {

            unionSet.add(values[i]);

        }

        values = otherSet.values();

        for (var i = 0; i < values.length; i++) {

            unionSet.add(values[i]);

        }

        return unionSet;

    };

    this.intersection = function (otherSet) {//交集

        var intersectionSet = new Set();

        var values = this.values();

        for (var i = 0; i < values.length; i++) {

            if (otherSet.has(values[i])) {

                intersectionSet.add(values[i]);

            }

        }

        return intersectionSet;

    };

    this.difference = function (otherSet) {//差集

        var differenceSet = new Set();

        var values = this.values();

        for (var i = 0; i < values.length; i++) {

            if (!otherSet.has(values[i])) {

                differenceSet.add(values[i]);

            }

        }

        return differenceSet;

    };

    this.subset = function (otherSet) {//子集

        if (this.size() > otherSet.size()) {

            return false;

        } else {

            var values = this.values();

            for (var i = 0; i < values.length; i++) {

                if (!otherSet.has(values[i])) {

                    return false;

                }

            }

            return true;

        }

    };

}

var set=new Set();

set.add(4);

console.log(set.valueLegacy());

console.log(set.has(1));

console.log(set.size());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 集合