<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>集合封装</title> </head> <body> <script> function Set(){ this.items={} Set.prototype.add=function(value){ if(this.has(value)){ return false } //判断集合中是否又这个元素 this.items[value]=value return true } Set.prototype.has=function(value){ this.items.hasOwnProperty(value) } Set.prototype.remove=function(value){ if(!this.has(value)){ return false } delete this.items[value] return true } Set.prototype.clear=function(){ this.items={} } Set.prototype.size=function(){ return Object.keys(this.items).length } Set.prototype.values=function(){ return Object.keys(this.items) } Set.prototype.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 } Set.prototype.intersection=function(otherSet){ var intersection=new Set() var values=this.values() for(var i=0;i<values.length;i++){ unionSet.add(values[i]) if(otherSet.has(item)){ intersection.add(item) } } return intersection } Set.prototype.difference=function(otherSet){ var difference=new Set() for(var i=0;i<values.length;i++){ var item=values[i] if(!otherSet.has(item)){ difference.add(item) } } return difference } Set.prototype.subset=function(otherSet){ var values=this.values() for(var i=0;i<values.length;i++){ var item=values[i] if(!otherSet.has(item)){ return false } } return true } } </script> </body> </html>