JavaScript Set 集合类的完整实现与用法详解
本文详细介绍 JavaScript 中 Set 集合类的自定义实现方法。通过封装 add、remove、union、intersect 等核心函数,展示如何构建支持并集、交集、差集及子集判断的集合对象。文中包含完整代码示例与在线运行测试,帮助开发者掌握基础数据结构在 JS 中的实际应用。
JavaScript Set 集合类实现概述
本文通过具体实例,详细讲解 JavaScript 中 Set 集合类的构建逻辑与实际操作方式,旨在为读者提供可参考的代码实现方案。
JavaScript 中 Set 集合类的具体实现代码。
Set 集合类核心代码实现
/*js集合set类的实现*/
function Set() {
this.dataStore = [];
this.add = add;//新增元素
this.remove = remove;//删除元素
this.size = size;//集合的元素个数
this.union = union;//求并集
this.contains = contains;//判断一个集合中是否包含某个元素
this.intersect = intersect;//交集
this.subset = subset;//判断一个集合是否是另一个的子集
this.difference = difference;//求补集
this.show = show;//将集合元素显示出来
}
function add(data) {
if (this.dataStore.indexOf(data) < 0) {
this.dataStore.push(data);
return true;
}
else {
return false;
}
}
function remove(data) {
var pos = this.dataStore.indexOf(data);
if (pos > -1) {
this.dataStore.splice(pos,1);
return true;
}
else {
return false;
}
}
function size() {
return this.dataStore.length;
}
function show() {
return "[" + this.dataStore + "]";
}
function contains(data) {
if (this.dataStore.indexOf(data) > -1) {
return true;
}
else {
return false;
}
}
function union(set) {
var tempSet = new Set();
for (var i = 0; i < this.dataStore.length; ++i) {
tempSet.add(this.dataStore[i]);
}
for (var i = 0; i < set.dataStore.length; ++i) {
if (!tempSet.contains(set.dataStore[i])) {
tempSet.dataStore.push(set.dataStore[i]);
}
}
return tempSet;
}
function intersect(set) {
var tempSet = new Set();
for (var i = 0; i < this.dataStore.length; ++i) {
if (set.contains(this.dataStore[i])) {
tempSet.add(this.dataStore[i]);
}
}
return tempSet;
}
function subset(set) {
if (this.size() > set.size()) {
return false;
}
else {
for(var member in this.dataStore) {
if (!set.contains(member)) {
return false;
}
}
}
return true;
}
function difference(set) {
var tempSet = new Set();
for (var i = 0; i < this.dataStore.length; ++i) {
if (!set.contains(this.dataStore[i])) {
tempSet.add(this.dataStore[i]);
}
}
return tempSet;
}
/*测试例子:求补集。属于集合cis,不属于集合it*/
var cis = new Set();
var it = new Set();
cis.add("Clayton");
cis.add("Jennifer");
cis.add("Danny");
it.add("Bryan");
it.add("Clayton");
it.add("Jennifer");
var diff = new Set();
diff = cis.difference(it);
console.log(cis.show() + " difference " + it.show() + " -> " + diff.show());
代码测试与结果验证
利用在线 HTML/CSS/JavaScript 代码运行工具(如 http://tools.jb51.net/code/HtmlJsRun)对上述代码进行测试,可获得相应的运行结果展示。

JavaScript 相关学习资源推荐
若需进一步了解 JavaScript 相关知识,建议查阅本站相关专题,包括《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》以及《JavaScript错误与调试技巧总结》。
总结
期望本文提供的集合类实现方案能对各位 JavaScript 程序开发人员有所助益。
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
