(三)前端javascript中的数据结构之集合

集合的特点
1.无序
2.唯一性
3.不可重复

集合相对于前面几种数据结构,比较简单好理解,看看代码实现就能知道他的用法了

集合的创建

function MySet() {this.item = {};
}
MySet.prototype.has = function (value) {return value in this.item;
};
//增
MySet.prototype.add = function (value) {if (this.has(value)) return false;this.item[value] = value;return true;
};
//删
MySet.prototype.remove = function (value) {if (!this.has(value)) return false;delete this.item[value];return true;
};
//清空
MySet.prototype.clear = function () {this.item = {};
};
//长度
MySet.prototype.size = function () {return Object.keys(this.item).length;
};
//获取值
MySet.prototype.values = function () {let arr = [];console.log("🚀 ~ Object.keys(this.item):", Object.keys(this.item));for (i = 0; i < Object.keys(this.item).length; i++) {const key = Object.keys(this.item)[i];arr.push(this.item[key]);}return arr;
};
//查询
MySet.prototype.print = function () {console.log(this.item);return this.item;
};

//集合的操作

//求并集
MySet.prototype.addUnion = function (data) {let newSet = new MySet();let values = this.values();for (let i = 0; i < values.length; i++) {newSet.add(values[i]);}let values2 = data.values();for (let i = 0; i < values2.length; i++) {newSet.add(values2[i]);}return newSet.values();
};

//求交集

MySet.prototype.interSection = function (data) {const interSection = new MySet();const oldValues = this.values();for (let i = 0; i < oldValues.length; i++) {if (data.has(oldValues[i])) {interSection.add(oldValues[i]);}}return interSection.values();
};

//求差集

MySet.prototype.diff = function (data) {const diff = new MySet();const oldValues = this.values();for (let i = 0; i < oldValues.length; i++) {if (!data.has(oldValues[i])) {diff.add(oldValues[i]);}}return diff.values();
};

测试

const set = new MySet()set.add('a',1)set.add('b',2)console.log(set.print())console.log('values',set.values())//测试求并集const set1 = new MySet()set1.add(1)set1.add(2)set1.add(3)const set2 = new MySet()set2.add(3)set2.add(4)set2.add(5)set2.add(6)set2.add(7)const result = set1.addUnion(set2)console.log(result)  //[1, 2, 3, 4, 5, 6, 7]//求交集const set3 = new MySet()set3.add(1)set3.add(2)set3.add(3)const set4 = new MySet()set4.add(3)set4.add(4)set4.add(5)set4.add(6)const result2 = set3.interSection(set4)console.log("🚀 ~ result2:", result2)//求差集const set5 = new MySet()set5.add(1)set5.add(2)set5.add(3)const set6 = new MySet()set6.add(3)set6.add(4)const result3 = set5.diff(set6)console.log("🚀 ~ result3:", result3)

在这里插入图片描述
可以参照着练习下,其实不难,这个知识点!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编程范式之函数式编程

目录 前言1. 函数式编程的定义2. 函数式编程的特点2.1 纯函数2.2 不可变性2.3 高阶函数2.4 惰性求值 3. 函数式编程的应用场景3.1 并行计算3.2 数据分析3.3 Web开发 4. 函数式编程的优缺点4.1 优点4.2 缺点 5. 代表性的编程语言5.1 Haskell5.2 Scala5.3 Clojure 6. 示例代码结语…

Java中常见的消息中间件有哪些,各自的优缺点是那些?

1、ActiveMQ 优点&#xff1a; Apache基金会开发的开源消息中间件&#xff0c;支持JMS规范。 提供多种集群模式和高可用机制。 易于使用&#xff0c;并且与多种编程语言交互良好。 缺点&#xff1a; 在处理大量消息和并发连接时&#xff0c;性能可能不如其他中间件。 对于大型…

状态模式在金融业务中的应用及其框架实现

引言 状态模式&#xff08;State Pattern&#xff09;是一种行为设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态的相关行为分离到独立的状态类中&#xff0c;使得状态转换更加明确和简洁。在金融业务中&#xff0c;状态模式可以用于实现交易状…

legoloam算法环境配置和调试笔记

安装gtsam 参考 Ubuntu20.04安装gtsam记录_gtsam安装-CSDN博客 mkdir buildcd buildcmake .. make -

简谈设计模式之设计原则

设计模式是软件工程中解决特定问题的通用解决方案。这些模式提供了设计结构和最佳实践&#xff0c;帮助开发者创建灵活、可重用和可维护的代码。 设计模式分类 创建型模式 用于描述"如何创建对象", 它的特点是“将对象的创建和使用分离”. 包括单例, 原型, 工厂方…

负载均衡(Load Balancing)、集群(Cluster)和分布式(Distributed)

负载均衡&#xff08;Load Balancing&#xff09; 定义&#xff1a;负载均衡是指将网络流量或计算任务均匀地分配到多个服务器或计算资源上&#xff0c;以提高系统的整体处理能力、可靠性和响应速度。 特点&#xff1a; 流量分配&#xff1a;负载均衡器根据一定的算法&#x…

HTML5新增的input元素属性:placeholder、required、autofocus、min、max等

HTML5 大幅度地增加与改良了 input 元素的属性&#xff0c;可以简单地使用这些属性来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 下面将详细介绍这些新增的 input 元素的属性。 属性说明属性说明placeholder在输入框显示描述性或提示性文本list为文本框添加选…

React+TS前台项目实战(二十七)-- 首页响应式构建之banner、搜索、统计模块布局

文章目录 前言一、 效果展示二、相关模块1. Statistic统计模块功能分析代码详细注释使用方式 2. Search搜索模块功能分析代码详细注释使用方式 3. banner模块功能分析代码详细注释使用方式 总结 前言 前面我们已经封装了这个项目基本要用到的全局组件了&#xff0c;现在就开始…

ScreenAI ——能理解从信息图表到用户界面的图像和文本算法解析

概述 论文地址&#xff1a;https://arxiv.org/pdf/2402.04615.pdf 信息图表&#xff08;图表、示意图、插图、地图、表格、文档布局等&#xff09;能够将复杂的数据和想法转化为简单的视觉效果&#xff0c;因此一直以来都被视为传播的重要元素。这种能力来自于通过布局和视觉线…

在Pycharm中把jupyter notebook转换成md格式

在Pycharm的控制台输入&#xff1a; jupyter nbconvert --to markdown filename.ipynb这里实际上是用的nvconvert 同理&#xff0c;如果是在vscode中写jupyter&#xff0c;也可以用&#xff1a; jupyter nbconvert --to FORMAT notebook.ipynb将其变成ipynb文件&#xff08;…

普通人必看!AI绘画商业变现全攻略(附教程)

大部分的设计师除了主业以外&#xff0c;都会利用空余时间去接单做副业。 单子包括但不限于产品/品牌LOGO、电商产品图设计、海报、室内设计图等等&#xff0c;单价在几十到上千不等 引起了我的思考&#xff0c;我们普通人有没有机会&#xff0c;也能像他们一样去接单赚钱吗&a…

pytorch- RNN循环神经网络

目录 1. why RNN2. RNN3. pytorch RNN layer3.1 基本单元3.2 nn.RNN3.2.1 函数说明3.2.2 单层pytorch实现3.2.3 多层pytorch实现 3.3 nn.RNNCell3.3.1 函数说明3.3.2 单层pytorch实现3.3.3 多层pytorch实现 4.完整代码 1. why RNN 以淘宝的评论为例&#xff0c;判断评论是正面…

Jackson中ObjectMapper

文章目录 概要ObjectMapper常用方法将Java对象转换为JSON字符串从JSON字符串转换为Java对象读取JSON文件并解析为树结构 概要 ObjectMapper 是 Jackson 数据处理库的核心类&#xff0c;用于将 Java 对象转换为 JSON&#xff0c;以及将 JSON 转换为 Java 对象。 ObjectMapper常…

matplotlib颜色对照表

matplotlib的色彩设置: #------------------------------------------------------------------------------------------------------------------------------- #-------------------------------------------------------------------------------------------------------…

【JavaWeb】登录校验-会话技术(二)JWT令牌

JWT令牌 介绍 JWT全称&#xff1a;JSON Web Token &#xff08;官网&#xff1a;https://jwt.io/&#xff09; 定义了一种简洁的、自包含的格式&#xff0c;用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在&#xff0c;这些信息是可靠的。 简洁&#xff1a…

vue和react你怎么选择?

在选择Vue和React之间&#xff0c;其实没有一个绝对的“最佳选择”&#xff0c;因为这取决于你的项目需求、团队熟悉度、开发环境、以及你对这两个框架的个人偏好。下面是一些可以帮助你做出决策的因素&#xff1a; 1. 学习曲线 Vue&#xff1a;Vue的学习曲线相对平缓&#xf…

Android Camera API发展历程

Android Camera API发展历程 一、Android Camera API介绍 Android系统中Camera API是用于控制相机设备的主要API&#xff0c;到目前为止&#xff0c;Camera API历史上共历经了三版重要的API。 在Android 5.0之前&#xff0c;主要使用的是Camera API1&#xff0c;但现在已经弃…

如何使用 Puppeteer 避免机器人检测?

为什么有反机器人系统&#xff1f; 保护网站资源和性能 爬虫和机器人程序在短时间内可以发送大量请求&#xff0c;消耗服务器资源&#xff0c;导致网站性能下降甚至崩溃。 反机器人系统可以帮助网站管理和限制这些请求&#xff0c;从而保持网站的稳定性和可用性。 防止数据…

借助软件资产管理系统,优化Solidworks软件许可证管理

在当今数字化的企业环境中&#xff0c;软件许可证的有效管理对于业务的顺畅运行至关重要。然而&#xff0c;IT 运维部门常常面临着诸如用户部门 SW 许可证不够用、使用紧张等问题&#xff0c;而由于缺乏可靠的数据支持&#xff0c;难以准确判断许可证的短缺程度&#xff0c;这给…

MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…