JavaScript Set

function Set() {
	var items = {};
	this.has = function(value) {
		return value in items
	}
	this.add = function(value) {
		if (!this.has(value)) {
			items[value] = value;
			return true
		}
		return false
	}
	this.remove = function() {
		if (this.has(value)) {
			delete items[value];
			return true
		}
		return false
	}
	this.size = function() {
		return Object.keys(items).length
	}
	this.values = function() {
		return Object.keys(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 intersection = new Set();
		var values = this.values();
		for (var i = 0; i < values.length; i++) {
			if (otherSet.has(values[i])) {
				intersection.add(values[i])
			}
		}
		return intersection
	}
	this.difference = function(otherSet) {
		var differece = new Set();
		var values = this.values();
		for (var i = 0; i < values.length; i++) {
			if (!otherSet.has(values[i])) {
				differece.add(values[i])
			}
		}
		return differece
	}
	this.subSet = function(otherSet) {
		var subSet = new Set();
		if (this.size() > otherSet.size()) {
			return false
		}
		var values = this.values();
		for (var i = 0; values.length; i++) {
			if (!otherSet.has(values[i])) {
				return false
			}
		}
		return true
	}
}

  

posted @ 2016-01-11 21:21  shidengyun  阅读(517)  评论(0)    收藏  举报