js基础速成-Set、Map
集合(Set)
集合是元素的集合,只能包含唯一元素
创建一个空集合
const companies = new Set()
console.log(companies)
Set(0) {}
从数组创建集合
const languages = ['英语','芬兰语','英语','法语','西班牙语','英语','法语',
]const setOfLanguages = new Set(languages)
console.log(setOfLanguages)
Set(4) {"英语", "芬兰语", "法语", "西班牙语"}
集合是可迭代对象,我们可以迭代每个元素。
const languages = ['英语','芬兰语','英语','法语','西班牙语','英语','法语',
]const setOfLanguages = new Set(languages)for (const language of setOfLanguages) {console.log(language)
}
英语芬兰语法语西班牙语
向集合添加元素
const companies = new Set() // 创建一个空集合
console.log(companies.size) // 0companies.add('谷歌') // 向集合添加元素
companies.add('脸书')
companies.add('亚马逊')
companies.add('甲骨文')
companies.add('微软')
console.log(companies.size) // 集合中5个元素
console.log(companies)
Set(5) {"谷歌", "脸书", "亚马逊", "甲骨文", "微软"}
我们也可以使用循环向集合添加元素。
const companies = ['谷歌', '脸书', '亚马逊', '甲骨文', '微软']
setOfCompanies = new Set()
for (const company of companies) {setOfCompanies.add(company)
}
Set(5) {"谷歌", "脸书", "亚马逊", "甲骨文", "微软"}
从集合中删除元素
我们可以使用 delete 方法从集合中删除元素。
console.log(companies.delete('谷歌'))
console.log(companies.size) // 剩下4个元素
检查集合中是否有元素
has 方法可以帮助我们检查某个元素是否存在于集合中。
console.log(companies.has('苹果')) // false
console.log(companies.has('脸书')) // true
清空集合
这将移除集合中的所有元素。
companies.clear()
console.log(companies)
Set(0) {}
下面的例子展示了如何使用集合。
const languages = ['英语','芬兰语','英语','法语','西班牙语','英语','法语',
]
const langSet = new Set(languages)
console.log(langSet) // Set(4) {"英语", "芬兰语", "法语", "西班牙语"}
console.log(langSet.size) // 4const counts = []
const count = {}for (const l of langSet) {const filteredLang = languages.filter((lng) => lng === l)console.log(filteredLang) // ["英语", "英语", "英语"]counts.push({ lang: l, count: filteredLang.length })
}
console.log(counts)
[{ lang: '英语', count: 3 },{ lang: '芬兰语', count: 1 },{ lang: '法语', count: 2 },{ lang: '西班牙语', count: 1 },
]
集合的另一个用法是计算数组中的唯一项。
const numbers = [5, 3, 2, 5, 5, 9, 4, 5]
const setOfNumbers = new Set(numbers)console.log(setOfNumbers)
Set(5) {5, 3, 2, 9, 4}
集合的并集
可以使用扩展运算符来找到两个集合的并集。让我们找出集合 A 和集合 B 的并集(A U B)。
let a = [1, 2, 3, 4, 5]
let b = [3, 4, 5, 6]
let c = [...a, ...b]let A = new Set(a)
let B = new Set(b)
let C = new Set(c)console.log(C)
Set(6) {1, 2, 3, 4, 5, 6}
集合的交集
可以使用 filter 方法找到两个集合的交集。让我们找出集合 A 和集合 B 的交集(A ∩ B)。
let a = [1, 2, 3, 4, 5]
let b = [3, 4, 5, 6]let A = new Set(a)
let B = new Set(b)let c = a.filter((num) => B.has(num))
let C = new Set(c)console.log(C)
Set(3) {3, 4, 5}
集合的差集
可以使用 filter 方法找到两个集合之间的差集。让我们找出集合 A 和集合 B 的差集(A \ B)。
let a = [1, 2, 3, 4, 5]
let b = [3, 4, 5, 6]let A = new Set(a)
let B = new Set(b)let c = a.filter((num) => !B.has(num))
let C = new Set(c)console.log(C)
Set(2) {1, 2}
映射(Map)
创建一个空映射
const map = new Map()
console.log(map)
Map(0) {}
从数组创建映射
countries = [['芬兰', '赫尔辛基'],['瑞典', '斯德哥尔摩'],['挪威', '奥斯陆'],
]
const map = new Map(countries)
console.log(map)
console.log(map.size)
Map(3) {"芬兰" => "赫尔辛基", "瑞典" => "斯德哥尔摩", "挪威" => "奥斯陆"}
3
向映射添加值
const countriesMap = new Map()
console.log(countriesMap.size) // 0
countriesMap.set('芬兰', '赫尔辛基')
countriesMap.set('瑞典', '斯德哥尔摩')
countriesMap.set('挪威', '奥斯陆')
console.log(countriesMap)
console.log(countriesMap.size)
Map(3) {"芬兰" => "赫尔辛基", "瑞典" => "斯德哥尔摩", "挪威" => "奥斯陆"}
3
从映射中获取值
console.log(countriesMap.get('芬兰'))
赫尔辛基
检查映射中的键
使用 has 方法检查映射中是否存在某个键。返回 true 或 false。
console.log(countriesMap.has('芬兰'))
true
通过循环获取映射中的所有值。
for (const country of countriesMap) {console.log(country)
}
(2) ["芬兰", "赫尔辛基"]
(2) ["瑞典", "斯德哥尔摩"]
(2) ["挪威", "奥斯陆"]
for (const [country, city] of countriesMap) {console.log(country, city)
}
芬兰 赫尔辛基
瑞典 斯德哥尔摩
挪威 奥斯陆
相关文章:
js基础速成-Set、Map
集合(Set) 集合是元素的集合,只能包含唯一元素 创建一个空集合 const companies new Set() console.log(companies)Set(0) {}从数组创建集合 const languages [英语,芬兰语,英语,法语,西班牙语,英语,法语, ]const setOfLanguages new …...
手机软件何时统一——桥接模式
文章目录 手机软件何时统一——桥接模式凭什么你的游戏我不能玩紧耦合的程序演化合成/聚合复用原则松耦合的程序桥接模式桥接模式基本代码 手机软件何时统一——桥接模式 凭什么你的游戏我不能玩 时间:5月31日20点 地点:大鸟房间 人物…...
【Nacos 架构 原理】服务发现模块之Nacos注册中心服务数据模型
文章目录 服务(Service)和服务实例(Instance)定义服务服务元数据定义实例实例元数据持久化属性 集群定义集群 生命周期服务的生命周期实例的生命周期集群的生命周期元数据的生命周期 服务(Service)和服务实…...
基于微信小程序爱心领养小程序设计与实现(源码+参考文档+定制开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
【数据库】 MongoDB 用户分配新的角色和权限
在 MongoDB 中,可以通过简单的命令为用户分配新的角色和权限。这对于调整用户的访问能力和管理数据库安全至关重要。以下是如何为用户分配新的角色和权限的详细步骤。 1. 使用 MongoDB Shell 分配角色 1.1 修改用户角色 要为现有用户分配新的角色,可以…...
加速 Python for 循环
在 Python 编程中,for 循环是开发者常用的工具之一,但它的执行速度经常让人感到不满。幸运的是,有许多方法可以显著提高 for 循环的效率。 本文将介绍几种简单而高效的优化技巧,帮助你加速Python for 循环,速度提升从…...
计算机毕业设计 基于Python国潮男装微博评论数据分析系统的设计与实现 Django+Vue 前后端分离 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
React 表单与事件
React 表单与事件 React 是一个用于构建用户界面的 JavaScript 库,它通过组件化的方式来提高开发效率和代码的可维护性。在 React 应用中,表单和事件处理是核心功能之一,它们允许用户与应用程序进行交互。本文将深入探讨 React 中的表单处理…...
Appium独立测试自动化初始化脚本
1、查看环境初始化参数 确保appium已经开起来了,设置ip ,并点击启动 打开夜神模拟器,点击工具--设置 最下面的版本说明,双击进去 版本号这里再去单击。 直到进入到开发者模式。 可能我们不是开发者模式打开的状态,所以软件访问模…...
Nginx反向代理配置支持websocket
一、官方文档 WebSocket proxying 为了将客户端和服务器之间的连接从HTTP/1.1转换为WebSocket,使用了HTTP/1.1中可用的协议切换机制(RFC 2616: Hypertext Transfer Protocol – HTTP/1.1)。 然而,这里有一个微妙之处:由于“升级”…...
C# 游戏引擎中的协程
前言 书接上回,我谈到了Unity中的协程的重要性,虽然协程不是游戏开发“必要的”,但是它可以在很多地方发挥优势。 为了在Godot找回熟悉的Unity协程开发手感,不得不自己做一个协程系统,幸运的是,有了Unity的…...
如何封装微信小程序中的图片上传功能
文章目录 前言一、需求分析与设计思路二、上传图片功能封装三、页面调用示例四、功能改进与扩展4.1 压缩图片4.2 上传进度4.3 重试机制 五、总结 前言 在微信小程序开发中,图片上传功能是一个十分常见的需求,不管是社交分享、商城中的商品图片上传&…...
被问界/理想赶超!奔驰CEO再度“出马”,寻找中国外援
来自中国车企的全方位、持续施压,让大部分外资车企开始寻求更多的本地化合作来实现技术升级。传统豪华品牌也同样如此。 本周,知情人士透露,梅赛德斯奔驰首席执行官Ola Kllenius计划再次访问中国,目的是进一步寻求和扩大与本地技术…...
魔改xjar支持springboot3,
jar包加密方案xjar, 不支持springboot3。这个发个魔改文章希望大家支持 最近公司需要将项目部署在第三方服务器,于是就有了jar包加密的需求,了解了下目前加密方案现况如下: 混淆方案,就是在代码中添加大量伪代码,以便隐藏业务代…...
python json文件读写
在Python中处理JSON文件是一个常见的任务。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python提供了内置的json模块来帮助我们读取和写入JSON格式的数据。 如何读…...
Android常用C++特性之std::find_if
声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。 std::find_if 是 C 标准库中的一个算法,用于在给定范围内查找第一个满足特定条件的元素。它接受一个范围(由迭代器指定)和一个谓词…...
19 vue3之自定义指令Directive按钮鉴权
directive-自定义指令(属于破坏性更新) Vue中有v-if,v-for,v-bind,v-show,v-model 等等一系列方便快捷的指令 今天一起来了解一下vue里提供的自定义指令 Vue3指令的钩子函数 created 元素初始化的时候beforeMount 指令绑定到元素后调用 只调用一次mounted 元素插入父级dom…...
数据资产新范式,URP城市焕新平台东博会首发!
城市数据资产蕴藏着巨大的宝藏。今年1月,国家数据局印发《“数据要素”三年行动计划(2024—2026年)》,将“数据要素智慧城市”上升为“数据要素”计划的重要部分,加速释放城市数据资产价值。 高质量发展以数据要素驱动…...
儿童乐园软件下载安装 佳易王游乐场会员扣次管理系统操作教程
一、前言 儿童乐园软件下载安装 佳易王游乐场会员扣次管理系统操作教程 软件为绿色免安装版,已经内置数据库,不需再安装数据库文件,软件解压即可。 二、软件程序教程 1、软件可同时管理多个项目,项目设置方法如图,点…...
windows下 Winobj.exe工具使用说明c++
1、winobj.exe工具下载地址 WinObj - Sysinternals | Microsoft Learn 2、接下来用winobj.exe查看全局互斥,先写一个小例子 #include <iostream> #include <stdlib.h> #include <tchar.h> #include <string> #include <windows.h>…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...
