JS数据结构(五)——集合

127 阅读1分钟

集合

function Set(){
	let items = {};

	//has方法,值是否在集合中
	this.has = function(value){
		return value in items;
	}
	this.has = function(value){
		return items.hasOwnProperty(value);
	}

	//add方法添加值
	this.add = function(value){
		if(!this.has(value)){
			items[value] = value;
			return true;
		}
		return false;
	}

	//remove方法,验证值是否在集合中,存在就移除
	this.remove = function(value){
		if(this.has(value)){
			delete items[value];
			return true;
		}
		return false;
	}

	//移除集合中的所有的值
	this.clear = function(){
		items = {};
	}

	//size方法,返回集合中有多少项
	this.size = function(){
		return Object.keys(items).length;
	}
	//或
	this.size = function(){
		let count = 0;
		for(let key in items){
			if(items.hasOwnProperty(key))
				++count;
		}
		return count;
	}

	//values(),返回一个包含集合中所有值的数组
	this.values = function(){
		let values = [];
		for(let i=0,keys=Object.keys(items);i<keys.length;i++){
			values.push(items[keys[i]]);
		}
		return values;
	}
	//或
	this.values = function(){
		let values = [];
		for(let key in items){
			if(items.hasOwnProperty(key)){
				values.push(items[key]);
			}
		}
		return values;
	}
}