Set和Map有什么相同和不同之处?

Set 和 Map 都是 ES6(ECMAScript 2015)中引入的两种新的数据结构,它们都属于集合类型,但各自有各自的特点和用法。

相同点:

  1. 键的唯一性:无论是 Set 还是 Map,它们的键(在 Set 中,键和值是一样的)都是唯一的,不会有重复。
  2. 存储对象引用Set 和 Map 都是存储对象引用的,而不是存储对象的副本。

不同点:

  1. 存储的数据结构

    • Set 存储的是键值对,但键和值是相同的。因此,Set 成员的值都是唯一的,没有重复的值。
    • Map 存储的是键值对,键和值可以是任何类型(对象或者原始值),且键是唯一的。
  2. 使用方法

    • Set 主要用于检查一个值是否存在于某个集合中,实现并集、交集和差集等运算。
    • Map 主要是用来存储键值对,并且能通过键快速检索到值。
  3. 迭代顺序

    • Set 的迭代顺序就是元素的插入顺序。
    • Map 的迭代顺序是按照元素被插入时的顺序。

下面是一些具体的代码示例:

Set 的使用:

 
javascriptlet set = new Set();// 添加元素
set.add(1);
set.add(2);
set.add(2); // 这个元素不会被添加,因为 Set 中的元素是唯一的console.log(set.size); // 输出 2
console.log(set.has(2)); // 输出 true// 遍历 Set
for (let value of set) {
console.log(value); // 输出 1 和 2
}

Map 的使用:

 
javascriptlet map = new Map();// 添加键值对
map.set('key1', 'value1');
map.set('key2', 'value2');
map.set('key2', 'new value2'); // 这个键值对会替换掉原来的键值对console.log(map.size); // 输出 2
console.log(map.has('key2')); // 输出 true
console.log(map.get('key2')); // 输出 'new value2'// 遍历 Map
for (let [key, value] of map.entries()) {
console.log(key, value); // 输出 'key1', 'value1' 和 'key2', 'new value2'
}

在上面的代码中,你可以看到 Set 和 Map 的基本使用方式,包括添加元素、检查元素是否存在、获取元素以及遍历元素等。注意,Map 的遍历可以通过 map.entries()map.keys() 和 map.values() 方法分别获取键值对、键和值。

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

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

相关文章

若依前端分离版-APP(UNI APP)表单添加验证

1.在page页面中onReady事件添加如下代码 onReady() {this.$refs.form.setRules(this.rules)}, 2.在data中添加ruels这个对象 rules: {nickName: {rules: [{required: true,errorMessage: 用户昵称不能为空}]},phonenumber: {rules: [{required: true,errorMessage: 手机号码不…

Rust :如何累计时间长度?

在Rust中,如果你想要记录累计时间,通常可以使用标准库中的std::time::Duration类型。Duration类型表示一个时间段,并且它可以很容易地进行加法和减法操作,从而用于累计时间。 下面是一个简单的例子,展示了如何使用Dur…

C语言 | Leetcode C语言题解之第84题柱状图中最大的矩形

题目&#xff1a; 题解&#xff1a; int largestRectangleArea(int* heights, int heightsSize) {int st[heightsSize];int p[2];p[0]-1,p[1]heightsSize;int size0,result0;st[size]0;for(int i1;i<heightsSize;i){ while(size!0&&heights[i]<heights[st[size-1…

动态规划解决回文子串问题

前言&#xff1a; 回文串相关问题在我们的算法题中算是老生常谈&#xff0c;本文主要介绍如何使用动态规划的思路去解决回文串系列问题。 总体思路&#xff1a; 能够将所有的子串是否是回文的信息&#xff0c;存储在二维dp表中。有了这个dp表&#xff0c;就可以将hard难度转…

Vue3实战笔记(07)— Axios进阶与提高

文章目录 前言一、创建自定义配置的实例二、掌握返回的结果结构三、拦截器相关用法四、异常处理相关五、取消请求的方式总结 前言 书接上文&#xff0c;目标对Axios的更多功能和特性熟练与提高。 一、创建自定义配置的实例 axios可以创建自定义配置的实例&#xff0c;可以试试…

密钥变更检查导致VScode远程SSH时无法连接服务器

报错 使用vscode的Remote - SSH插件远程连接不同服务器时报错如下 [11:42:51.784] Log Level: 2 [11:42:51.792] SSH Resolver called for "ssh-remote27.23.24.103", attempt 1 [11:42:51.793] "remote.SSH.useLocalServer": false [11:42:51.793] &quo…

使用vue3以及原生input实现一个可复用的组件(包括各种数组类型,手机号类型,小数类型)

看标题要实现可复用 那我就注册到全局组件里面 在component.ts //注册全局公共组件 import MxInput from /components/common/MxInput.vue const commonComponents {install(Vue) {Vue.component(MxInput, MxInput)} }; export default commonComponents;子组件&#xff1a;…

【实战】采用jenkins pipeline实现自动构建并部署至k8s

文章目录 前言部署jenkins编写docker-compose-jenkins.yaml配置maven源启动jenkins解锁jenkins Jenkins默认插件及git、镜像仓库、k8s凭证配置host key verification configuration修改为不验证Gitee ssh阿里云镜像仓库ssh编写pipeline安装以下常用插件将kubectl命令文件拷贝到…

E - Yet Another Sigma Problem(ABC字典树)

思路&#xff1a;我们可以发现两个字符串的最长公共前缀就是字典树中的最近公共祖先。然而这道题&#xff0c;比如说某个结点是x个字符串的前缀&#xff0c;那么当前结点对答案的贡献为x * (x - 1) / 2&#xff0c;就是x中任选两个字符串组合&#xff0c;因为在这之前&#xff…

【Win10设备管理器中无端口选项】

计算机疑难杂症分享002 Win10设备管理器中无端口选项1、问题现象2、问题原因3、问题解决3.1、驱动精灵(亲测的此方法)3.2、添加过时硬件3.3、官方的方法 Win10设备管理器中无端口选项 1、问题现象 当我调试串口通信时&#xff0c;发现打开设备管理器没有端口&#xff0c;打开…

Docker停止不了

报错信息 意思是&#xff0c;docker.socket可能也会把docker服务启动起来 解决 检查服务状态 systemctl status dockersystemctl is-enabled docker停止docker.socket systemctl stop docker.socket停止docker systemctl stop docker知识扩展 安装了docker后&#xff0c;…

[ue5]编译报错:使用未定义的 struct“FPointDamageEvent“

编译报错&#xff0c;错误很多&#xff0c;但很明显核心问题是第一个&#xff1a;使用未定义的 struct“FPointDamageEvent“&#xff1a; 程序没有找到FPointDamageEvent的定义。 解决办法&#xff1a; 处理这类未定义都可以先F12&#xff0c;找到它的库位置&#xff0c;之后…

部署yolov5

1 创建一个yolov5的环境 conda create -n yolov5 python3.8 2 激活环境 conda activate yolov5 3 设置清华源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 4 PyTorch 网站下载pytorch 备注:也可以使用pip install 5 下载 yolov5…

iOS collectionViewCell显示选中颜色

demo git地址&#xff1a;点这里 原理思想简介 reloadData只会刷新内存中保存的cell&#xff0c;注意cell会复用&#xff0c;所以最多会刷新当前显示的加上一个用来复用的cell。实现的思想有两种&#xff1a; 设置一个全局的变量保存选中的位置&#xff0c;然后刷新collectio…

数据可视化训练第四天(模拟投掷筛子并且统计频次)

投掷一个筛子 import matplotlib.pyplot as plt from random import randint import numpy as npclass Die:"""模拟投掷筛子"""def __init__(self,num_sides6):self.num_sidesnum_sidesdef roll(self):return randint(1,self.num_sides)num1000…

知识付费系统的骗局,网上补课平台怎么收费?标准是什么?

随着教育的不断改革和更新&#xff0c;一种全新的授课方式出现在大众眼前&#xff0c;利用网课服务平台进行在线授课教学&#xff0c;不管是小学生、中学生还是大学生都可以进行网上学习。那么网上补课平台怎么收费?标准是什么? 网上补课平台收费标准一般来说在线一对一家教可…

【初中数学竞赛】x^x=(4/9)^(4/9),x≠4/9,求x?

题 初中数学 初中数学竞赛模拟练习 已知 x x ( 4 9 ) 4 9 x^x(\frac{4}{9})^\frac{4}{9} xx(94​)94​&#xff0c; x ≠ 4 9 x\neq\frac{4}{9} x94​&#xff0c;求值 x _ _ _ _ _ x\_\_\_\_\_ x_____。 解 x x ( ( 2 3 ) 2 ) ( 4 9 ) ( 2 3 ) 2 4 9 ( 2 3 ) 8 9 ( 2…

泰迪智能科技大数据开发实训平台功能介绍

大数据开发实训平台是面向实训课和课后训练的编程实训平台&#xff0c;平台底层基于Docker技术&#xff0c;采用容器云部署方案&#xff0c;预装大数据相关课程教学所需的实训环境&#xff0c;拥有1主2从的Hadoop集群&#xff0c;还能够自主定制环境&#xff0c;并能够与实训管…

C++接口:构建模块化与可扩展的软件架构

目录标题 1. 接口的定义与作用2. 抽象类作为接口3. 接口的设计原则4. 示例&#xff1a;使用接口实现多态5. 拓展&#xff1a;接口和类的区别6. 结论 在C编程中&#xff0c;接口是一种重要的设计模式&#xff0c;它定义了一组方法&#xff0c;这些方法可以被不同的类实现。接口在…

高架学习笔记之主要敏捷方法概览

一、极限编程&#xff08;Extreme Programming&#xff0c;XP&#xff09; XP是一个轻量级、灵巧、严谨周密的开发方法&#xff0c;它的价值观是交流&#xff0c;朴素&#xff0c;反馈和勇气&#xff0c;可理解为加强交流&#xff0c;从简单做起&#xff0c;寻求反馈&#xff0…