1,集合的定义
2,并集
3,交集
4,差集
5,子集
5,集合的常见操作
- add(value):向集合添加一个新的元素
- remove(value):从集合移除一个值
- has(value):如果在集合中,返回true,否则返回false
- clear():移除集合所有的项
- size():返回集合所包含的元素数量,与数组的length属性一样
- values():返回一个包含所有集合的数组
- union(otherSet):求两个集合的并集
- intersection(otherSet):求两个集合的交集
- difference(otherSet):求两个集合的差集
- subset(otherSet):求两个集合是否属于子集关系
6,集合的实现
class Set{
constructor(){
this.items={}
}
add(value){
if(this.has(value)){
return false
}
this.items[value]=value
return true
}
has(value){
return this.hasOwnProperty(value)
}
remove(){
if(!this.has(value)){
return false
}
delete this.items[value]
return true
}
clear(){
this.items={}
}
size(){
return Object.keys(this.items)
}
union(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
}
insersection(otherSet){
var intersectionSet=new Set()
var values=this.values()
for(var i=0;i<values.length;i++){
var item=values[i]
if(otherSet.has(item)){
intersectionSet.add(item)
}
}
return intersectionSet
}
difference(otherSet){
var differenceSet=new Set()
var values=this.values()
for(var i=0;i<values.length;i++){
var item=values[i]
if(!otherSet.has(item)){
differenceSet.add(item)
}
}
return differenceSet
}
subset(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
}
}
var setA=new Set()
setA.add('one')
setA.add('two')
set.add('three')
var setB=new Set()
setB.add('one')
setB.add('two')
setB.add('four')
console.log(setA.union(setB).values(),"union")
console.log(setA.intersection(setB).values(),"intersection")
console.log(setA.difference(setB).values(),"difference")
console.log(setA.subset(setB),"subset")