js:数据结构笔记8--集合
集合:唯一性,无序性;
基本结构:
function Set () { this.dataStore = []; this.add = add; this.remove = remove; this.contains =contains; this.show = show; } function contains(data) { var pos = this.dataStore.indexOf(data); if(pos > -1) { return true; } else { return false; } } function add(data) { var pos = this.dataStore.indexOf(data); if( pos < 0) { this.dataStore.push(data); return true; } else { return false; } } function remove(data) { var pos = this.dataStore.indexOf(data); if(pos > -1) { this.dataStore.splice(pos,1); return true; } else { return false; } } function show() { console.log(this.dataStore); }
操作:demo
集合的基本操作:并集,交集,补集;
并集:
新增: function union(set) { var tempSet = new Set(); for(var i = 0; i < this.dataStore.length; ++i) { tempSet.add(this.dataStore[i]); } for(var i = 0; i < set.dataStore.length; ++i) { var setData = set.dataStore[i]; if(!tempSet.contains(setData)) { tempSet.dataStore.push(setData); } } return tempSet; }
操作: demo;
交集:
新增: function intersect(set) { var tempSet = new Set(); for(var i = 0; i < this.dataStore.length; ++i) { var thisData = this.dataStore[i]; if(set.contains(thisData)) { tempSet.add(thisData); } } return tempSet; }
操作: demo;
补集:
新增: function difference(set) { var tempSet = new Set(); for(var i = 0; i < this.dataStore.length; ++i) { var thisData = this.dataStore[i]; if(!set.contains(thisData)) { tempSet.add(thisData); } } return tempSet; }
父集判断:
新增: function size() { return this.dataStore.length; } function subset(set) { if(this.size() > set.size()) { return false; } else { for(var i = 0; i < this.dataStore.length; ++i) { var thisData = this.dataStore[i]; if(!set.contains(thisData)) { return false; } } } return true; }
操作:demo
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。