JS集合(Set)类的实现与使用方法示例
Set类的实现
Set(集合)是ECMAScript 6中新增的数据结构,它类似于数组,但其成员的值都是唯一的,没有重复的值。Set类的实现与使用方法示例如下:
class Set {
constructor() {
this.items = {}
}
/**
* 方法名称:add
* 方法描述:向集合中添加新的元素
* 参数:element:添加的元素
* 返回值:无
*/
add(element) {
if(!this.has(element)) {
this.items[element] = element
return true
}
return false
}
/**
* 方法名称:delete
* 方法描述:从集合中删除元素
* 参数:element: 删除的元素
* 返回值:true: 删除成功,false: 删除失败
*/
delete(element) {
if(this.has(element)) {
delete this.items[element]
return true
}
return false
}
/**
* 方法名称:has
* 方法描述:判断集合中是否存在某元素
* 参数:element:待判断的元素
* 返回值:true: 存在,false: 不存在
*/
has(element) {
return Object.prototype.hasOwnProperty.call(this.items, element)
}
/**
* 方法名称:clear
* 方法描述:清空集合
* 参数:无
* 返回值:无
*/
clear() {
this.items = {}
}
/**
* 方法名称:size
* 方法描述:获取集合的元素个数
* 参数:无
* 返回值:集合的元素个数
*/
size() {
return Object.keys(this.items).length
}
/**
* 方法名称:values
* 方法描述:获取集合中所有元素的值
* 参数:无
* 返回值:array: 集合中所有元素的值
*/
values() {
return Object.values(this.items)
}
/**
* 方法名称:union
* 方法描述:求两个集合的并集
* 参数:otherSet: 另一个集合
* 返回值:newSet: 两个集合的并集
*/
union(otherSet) {
const newSet = new Set()
this.values().forEach(value => {
newSet.add(value)
})
otherSet.values().forEach(value => {
newSet.add(value)
})
return newSet
}
/**
* 方法名称:intersection
* 方法描述:求两个集合的交集
* 参数:otherSet: 另一个集合
* 返回值:newSet: 两个集合的交集
*/
intersection(otherSet) {
const newSet = new Set()
this.values().forEach(value => {
if (otherSet.has(value)) {
newSet.add(value)
}
})
return newSet
}
/**
* 方法名称:difference
* 方法描述:求两个集合的差集
* 参数:otherSet: 另一个集合
* 返回值:newSet: 两个集合的差集
*/
difference(otherSet) {
const newSet = new Set()
this.values().forEach(value => {
if (!otherSet.has(value)) {
newSet.add(value)
}
})
return newSet
}
}
Set类的使用方法示例
示例一:求两个集合的并集
const set1 = new Set()
set1.add(1)
set1.add(2)
set1.add(3)
const set2 = new Set()
set2.add(2)
set2.add(3)
set2.add(4)
const unionSet = set1.union(set2)
console.log(unionSet.values()) // [1, 2, 3, 4]
示例二:求两个集合的交集
const set1 = new Set()
set1.add(1)
set1.add(2)
set1.add(3)
const set2 = new Set()
set2.add(2)
set2.add(3)
set2.add(4)
const intersectionSet = set1.intersection(set2)
console.log(intersectionSet.values()) // [2, 3]
以上就是关于JS集合(Set)类的实现与使用方法示例的完整攻略。Set类的使用方法与数组类似,但需要注意保证集合中所有元素都是不同的,否则会被覆盖。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS集合set类的实现与使用方法示例 - Python技术站