1 Star 0 Fork 0

math.most/js_study

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
029集合.js 3.03 KB
一键复制 编辑 原始数据 按行查看 历史
math.most 提交于 2021-09-19 18:21 +08:00 . 数据结构第一步
/**
* 集合
*/
// 封装
function Set() {
this.items = {}
// add方法
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]
}
// 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(newSet) {
// 1. 定义一个空集合
var unionSet = new Set()
// 2. 将当前集合加入到空集合中
var values = this.values()
for(i = 0; i < values.length; i ++) {
unionSet.add(values[i])
}
// 3. 将新集合加入到空集合中
var values = newSet.values()
for(i = 0; i < values.length; i ++) {
unionSet.add(values[i])
}
return unionSet
}
// 交集
Set.prototype.intersection = function(newSet) {
// 1. 定义一个空集合
var intersectionSet = new Set()
// 2. 取交集
var values = this.values()
for(i = 0; i < values.length; i ++) {
var item = values[i]
if (newSet.has(item)) {
intersectionSet.add(item)
}
}
return intersectionSet
}
// 差集
Set.prototype.difference = function(newSet) {
// 1. 定义一个空集合
var differenceSet = new Set()
// 2. 取差集
var values = this.values()
for(i = 0; i < values.length; i ++) {
var item = values[i]
if (!newSet.has(item)) {
differenceSet.add(item)
}
}
return differenceSet
}
// 子集
Set.prototype.sub = function(newSet) {
var values = this.values()
for(i = 0; i < values.length; i ++) {
var item = values[i]
if (!newSet.has(item)) {
return false
}
}
return true
}
}
// 测试代码
var set = new Set()
set.add("1")
set.add("2")
set.add("3")
set.add("4")
set.add("5")
set.add("6")
console.log(set.values()) // [ '1', '2', '3', '4', '5', '6' ]
set.remove("6")
console.log(set.values()) // [ '1', '2', '3', '4', '5' ]
console.log(set.size()) // 5
var new_set = new Set()
new_set.add("7")
new_set.add("8")
new_set.add("9")
console.log(new_set.values()) // [ '7', '8', '9' ]
console.log(set.union(new_set).values()) // ['1', '2', '3', '4', '5', '7', '8', '9']
console.log(set.intersection(new_set).values()) // [ '1', '2', '3' ]
console.log(set.difference(new_set).values()) // [ '1', '2', '3', '4', '5' ]
console.log(set.sub(new_set)) // false
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/mathmost/js_study.git
git@gitee.com:mathmost/js_study.git
mathmost
js_study
js_study
master

搜索帮助