集合的特点
- 集合中的元素一般是无序的、不重复的
集合的常见操作
add(value):向集合中添加一项
remove(value):在集合中移除一项
has(value):检查集合中是否存在某一项,返回布尔值
clear():清空集合中所有元素
size():返回集合中元素的长度
values():返回集合中所有项
union(otherSet):并集操作
intersection(otherSet):交集操作
difference(otherSet):差集操作
subset(otherSet):子集操作
complement(otherSet):补集操作
封装集合代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
function Set(){
//属性
this.items = {}
//app方法
Set.prototype.add = function(value){
if(this.has(value)){
return false
}
this.items[value] = value
return true
}
//has方法
Set.prototype.has = function(value){
return this.items.hasOwnProperty(value)
}
//remove方法
Set.prototype.remove = function(value){
if(!this.has(value)){
return false
}
delete this.items[value]
return true
}
//clear方法
Set.prototype.clear = function(){
this.items = {}
}
//size方法
Set.prototype.size = function(){
return Object.keys(this.items).length
}
//values方法
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 intersectionSet = new Set()
var values = this.values()
for(var i in values){
var item = values[i]
if(otherSet.has(item)){
intersectionSet.add(item)
}
}
return intersectionSet
}
//差集
Set.prototype.difference = function(otherSet){
var differenceSet = new Set()
var values = this.values()
for(var i in values){
var item = values[i]
if(!otherSet.has(item)){
differenceSet.add(item)
}
}
return differenceSet
}
//子集
Set.prototype.subset = function(otherSet){
var values = this.values()
for(var i in values){
var item = values[i]
if(!otherSet.has(item)){
return false
}
}
return true
}
//补集
Set.prototype.complement = function(otherSet){
var componentSet = new Set()
if(!otherSet.subset(this)){
return false
}
var values = otherSet.values()
for(var i = 0; i < values.length; i++){
if(this.has(values[i])){
componentSet.add(values[i])
}
}
return componentSet
}
}
var s = new Set()
s.add("1")
s.add("2")
s.add("3")
s.add("4")
var ss = new Set()
ss.add("2")
ss.add("3")
alert(s.complement(ss).values())
</script>
</body>
</html>
END
网友评论