首页 > Web开发 > 详细

js数据结构描述--集合

时间:2015-05-08 23:38:37      阅读:341      评论:0      收藏:0      [点我收藏+]
<script type="text/javascript">
    //如何判断一个数组是否存在某一元素
	//var arr = [1,2,3,5];
    //var arr = {a:1,b:2,c:3};

	function Set(data){
		this.constructor = set;
		this.dataStore = Object.prototype.toString.apply(data) == ‘[object Array]‘ ? data : [];
		this.in_array = in_array;
		this.size = size;
		this.add = add;
		this.remove = remove;
		this.show = show;
		this.union = union;
		this.intersect = intersect;	//求两个集合的交集
		this.is_subset = is_subset;	//判断一个集合是否是该集合的子集
		this.diff = diff;
	}
	
	//判断数组中是否存在某个元素
    function in_array(element){
		var position = this.dataStore.indexOf(element);
		return position < 0 ? false : position;
    }
	
	function add(element){
		if(!this.in_array(element,this.dataStore)){
			this.dataStore.push(element);
			return true;
		}else{
			return false;
		}
	}
	
	function remove(element){
		var position = this.in_array(element,this.dataStore);
		if(position){
			this.dataStore.splice(position,1);
			return true;
		}else{
			return false;
		}
	}
	
	
	//求两个集合的并集  
	function union(data){
		var result = this.dataStore.slice();	//js默认为引用传递
		var temp = new Set(data);
		temp.dataStore = data;
		
		for(var i=0;i<temp.size();i++){
			if(this.in_array(temp.dataStore[i],this.dataStore) === false){
				result.push(temp.dataStore[i]);
			}
		}
		return result.sort();
	}
	
	//求两个集合的交集
	function intersect(data){
		var result = [];
		var all = this.union(data);
		var temp = new Set(data);
		for(var i=0;i<all.length;i++){
			if(this.in_array(all[i],this.dataStore) !== false && temp.in_array(all[i],temp.dataStore) !== false){
				result.push(all[i]);
			}
		}
		return result;
	}
	
	//求集合1与集合2的差集
	function diff(data){
		var result = [];			//结果集
		var all = this.union(data);
		
		var temp = new Set(data);
		temp.dataStore = data;
		
		for(var i=0;i<all.length;i++){
			if(this.in_array(all[i],this.dataStore) !== false && temp.in_array(all[i],temp.dataStore) === false){
				result.push(all[i]);
			}
		}
		return result.sort();
	}
	
	
	//求集合的补集
	function  complement(){
		
	}
	
	
	//判断一个集合是否是另一个集合的子集
	function is_subset(data){
		var temp = new Set(data);
		for(var i=0;i<temp.size();i++){
			if(!this.in_array(temp.dataStore[i],this.dataStore)){
				return false;
			}
		}
		return true;
	}
	
	/*
	function diff(data){
		var result = [];			//结果集
		var all = this.union(data);
		
		var temp = new Set(data);
		temp.dataStore = data;
		
		for(var i=0;i<all.length;i++){
			if((this.in_array(all[i],this.dataStore) === false && temp.in_array(all[i],temp.dataStore) !== false) || (this.in_array(all[i],this.dataStore) !== false && temp.in_array(all[i],temp.dataStore) === false)){
				result.push(all[i]);
			}
		}
		return result.sort();
	}
	*/
	
	
	function size(){
		return this.dataStore.length;
	}
	
	function show(){
		return this.dataStore;
	}
	
	
	var arr1 = [0,1,2,3];
	var arr2 = [1,2,3];
	var set = new Set(arr1);
	//alert(set.size());			//获取集合有几个元素
	//set.remove(5);
	alert(set.is_subset(arr2));
	//alert(set.union(arr2));
	//alert(set.show());
</script>

  

js数据结构描述--集合

原文:http://www.cnblogs.com/liwuming/p/4488965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!