javascript集合的交,并,补,子集的操作实现
2016-08-28 20:08
666 查看
可能新的ECMA规范里已有了这些的实现,
但能自己从头开始实现,感觉也非常不错的哟。。。
但能自己从头开始实现,感觉也非常不错的哟。。。
function Set() { var items = {}; this.has = function(value){ return items.hasOwnProperty(value); }; this.add = function(value){ if (!this.has(value)){ items[value] = value; return true; } return false; }; this.remove = function(value){ if (this.has(value)) { delete items[value]; return true; } return false; }; this.clear = function(){ items = {}; }; this.size = function(){ var count = 0; for (var prop in items){ if(items.hasOwnProperty(prop)){ ++count; } } return count; }; this.values = function(){ var keys = []; for (var key in items){ keys.push(key); } return keys; }; this.union = function(otherSet){ var unionSet = new Set(); var values = this.values(); for(var i=0; i<values.length; i++){ unionSet.add(values[i]); } var 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(1); console.log(set.values()); //输出["1"] console.log(set.has(1)); //输出true console.log(set.size()); //输出1 set.add(2); console.log(set.values()); //输出["1", "2"] console.log(set.has(2)); //true console.log(set.size()); //2 set.remove(1); console.log(set.values()); //输出["2"] set.remove(2); console.log(set.values()); //输出[] var setA = new Set(); setA.add(1); setA.add(2); setA.add(3); var setB = new Set(); setB.add(3); setB.add(4); setB.add(5); setB.add(6); var unionAB = setA.union(setB); console.log(unionAB.values()); var setA = new Set(); setA.add(1); setA.add(2); setA.add(3); var setB = new Set(); setB.add(2); setB.add(3); setB.add(4); var intersectionAB = setA.intersection(setB); console.log(intersectionAB.values()); var setA = new Set(); setA.add(1); setA.add(2); setA.add(3); var setB = new Set(); setB.add(2); setB.add(3); setB.add(4); var differenceAB = setA.difference(setB); console.log(differenceAB.values()); var setA = new Set(); setA.add(1); setA.add(2); var setB = new Set(); setB.add(1); setB.add(2); setB.add(3); var setC = new Set(); setC.add(2); setC.add(3); setC.add(4); console.log(setA.subset(setB)); console.log(setA.subset(setC));
相关文章推荐
- javascript集合的交,并,补,子集,长度,新增,删除,清空等操作
- javascript集合的交,并,补,子集,长度,新增,删除,清空等操作
- Javascript实现对象的拖动操作
- java 实现将传入的两个集合进行并,交,联集,差操作
- Javascript - Select操作大集合
- javascript控制服务器控件-js操作CheckBoxList实现全选、反选
- javascript数组的扩展实现代码集合
- 求集合子集,和全排列的递归算法实现(c++,Dev C++调试通过)
- javascript控制服务器控件-js操作CheckBoxList实现全选、反选
- javascript操作listbox,实现无刷新
- javascript操作word实现替换功能
- (转载)javascript操作Select标记中options集合
- Javascript实现对象的拖动操作
- javascript实现操作cookie实现的可记忆菜单
- javascript实现操作cookie实现的可记忆菜单
- javascript操作Select标记中options集合
- Javascript操作DOM元素实现多段图决策问题
- 页面checkbox “全选定” 和 “全取消” 操作的实现(JavaScript)
- javascript操作Select标记中options集合
- Javascript - Select操作大集合