newMap和newSet

news2024/9/24 9:27:42

newMap

Map 对象存有键值对,其中的键可以是任何数据类型。Map字典是以[键,值]的形式存储**

1:键值对的键类型比较灵活

可以用任意类型的变量来做键名,

2 遍历键值对

for … in循环还有一些限制:它仅仅遍历可枚举属性、非Symbol属性,并且遍历的顺序是任意的。
优势:Map可以直接遍历,并且由于它是键控集合,遍历的顺序和插入键值的顺序是一致的。你可以使用for … of循环或forEach方法来遍历Map,

newSet

Set 是唯一值的集合,每个值在 Set 中只能出现一次,一个 Set 可以容纳任何数据类型的任何值。可以用来去重操作
Set集合是以[值,值]的形式存储元素,

map用法

在这里插入图片描述
1:size
size属性返回 Map 结构的成员总数。

const map = new Map();
map.set('foo', true);
map.set('bar', false); 
console.log(map.size)// 2

set()
key value不可重复

const m = new Map();
let fn = function(){}

m.set('edition', 6)        // 键是字符串
m.set(fn, 'standard')     // 键是函数
m.set(undefined, 'nah')    // 键是 undefined
m.set(1, 'a').set(2, 'b').set(3, 'c') // 链式操作
console.log(m) 

在这里插入图片描述
注意 不可重复 否则最后一个有效

const m = new Map(); 
m.set('a', 'nah')    // 键是 undefined
m.set('a', 'c') // 链式操作
console.log(m) 

在这里插入图片描述
get()
get方法读取key对应的键值,如果找不到key,返回undefined

const m = new Map(); 
const hello = function() {};
m.set(hello, 'Hello ES6!') // 键是函数 
m.get(hello)  // Hello ES6!

在这里插入图片描述
has()
has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中

const m = new Map();

m.set('edition', 666); 
m.set(undefined, 'undefined');

m.has('edition')     // true
m.has('years')       // false
m.has(undefined)     // true

delete()
delete方法删除某个键,返回true。如果删除失败,返回false

const m = new Map();
m.set(undefined, 'undefined');
m.has(undefined)     // true 
m.delete(undefined)
m.has(undefined) // false

clear()
clear方法清除所有成员,没有返回值

let map = new Map();
map.set('foo', true);
map.set('bar', false); 
map.size // 2
map.clear()
map.size // 0
map.has('foo')//false

遍历
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回所有成员的遍历器
forEach():遍历 Map 的所有成员

const map = new Map([
  ['F', 'no'],
  ['T',  'yes'],
]);

//keys()
for (let key of map.keys()) {
  console.log(key);       // "F"  "T"
}

//values()
for (let value of map.values()) {
  console.log(value);    // "no"  "yes"
}

// entries()
for (let item of map.entries()) {
  console.log(item[0], item[1]);
}
// "F" "no"  、"T" "yes"

// 或者
for (let [key, value] of map.entries()) {
  console.log(key, value);
}
// "F" "no" 、"T" "yes"

// 等同于使用map.entries()
for (let [key, value] of map) {
  console.log(key, value);
}
// "F" "no"  、 "T" "yes"

map.forEach(function(value, key, map) {
  console.log(key, value);    // "F" "no"  、 "T" "yes"
});

newSet使用

在这里插入图片描述

// 创建set空集合
var s=new Set()
// 添加数字
s.add(2)
// 添加数字
s.add(2)
// 添加字符串
s.add('name')
// 添加对象
s.add({})
// 判断是否存在该键
s.has(2) //true
// 判断是否存在该键
s.has(3) //false
// 删除键2
s.delete(2)
// 判断是否存在该键
s.has(2) //false
// 集合大小
s.size //2


set() 去重

1 .set集合可以添加数字,字符串,对象等类型的键,
2 .键不重复

let s1 =new Set([2,3,4,5,63,2,3,2,3])  // Set(5) {2, 3, 4, 5, 63}
let s2 =new Set(["name","sfd","name"]) //Set(2) {'name', 'sfd'}

去重

let init = [2,3,4,5,63,2,3,2,3]
let result =[...new Set(init)]//   [2, 3, 4, 5, 63]
除了...还可以去重之后转换为真正的数组 Array.form
Array.from(new Set(init))// [2, 3, 4, 5, 63]

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

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

相关文章

进程概念与进程控制

1.冯诺伊曼体系结构: 数据按照二进制存储 数据存储在存储器(内存)当中 输入设备 存储器 中央处理器 输出设备 2.操作系统: 先组织,再描述 系统调用与库函数: 系统调用 系统调用指运行在用户空间的程序向操作系统内核…

小程序-----vant weapp安装以及自定义主题色

首先查看小程序根目录中是否存在package.json文件 没有的话,在项目根目录打开cmd,输入npm init -y初始化一下,初始化一个包管理 安装vant weapp包 在根目录的cmd中输入npm i vant/weapp1.3.3 -S --production进行安装 后面可以指定版本 修改 app.json 将 app.json 中的 “…

【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )

文章目录 一、使用 注释语法 设置 类型注解1、使用 注释语法 设置 类型注解语法介绍2、为 基础类型变量 设置 " 类型注解 "3、为 类 的 对象类型 设置 " 类型注解 "4、为 基础容器类型变量 设置 简易 " 类型注解 "5、为 基础容器类型变量 设置 详…

Node.js下载安装和环境变量配置(详细教程)

目录 一、官网地址下载安装包 二、安装程序 三、环境配置 四、测试 五、安装淘宝镜像 5.1、附加:如果有出现问题的小伙伴们可以检查一下自己的配置有没有出错 一、官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择你的项目或系统对应的node.js版本…

【C++】 Qt-线程并发与线程同步

文章目录 线程并发线程同步原子访问(InterLocked)关键段(Critical_Section,也叫临界区)回顾单例出现的问题关键段基本使用封装关键段 Qt下的多线程多线程与进度条Qt-QThread 线程并发 我们再创建一个控制台文件命名为…

【Tauri + React 实战】VCluster - 了解技术选型与开发环境配置

VCluster A React Tauri App as visualizer of apps cluster on windows. 背景介绍 VCluster是一个在开发环境下,用以对一系列应用集群(如分布式、微服务)进行可视化管理的桌面应用程序,目标是实现类似 docker-compose 那样的集…

深入学习Python自定义函数

目录 0. 前言1. 最基础的自定义函数写法2. 参数传递3. 函数返回值4. 作用域5. 匿名函数6. 装饰器7. 闭包8. 生成器9. 为自定义函数写注解 0. 前言 今天来深入学习 Python 中的自定义函数,为的是日后能够写出时间和内存更好的优化,以及形成良好的编程习惯…

原型链:揭开JavaScript背后的神秘面纱

文章目录 1. 对象2. 原型(prototype)3. 原型链(prototype chain)4. 构造函数(constructor)5. prototype 属性6. 实例(instance)7. 原型继承(prototype inheritance&#…

HFSS仿真微带型威尔金森功分器学习笔记

HFSS仿真微带型威尔金森功分器 文章目录 HFSS仿真微带型威尔金森功分器1、 求解器设置2、 建模3、 边界条件设置4、 激励方式设置5、 扫频设置6、 设计检查,仿真分析7、 数据后处理 设计要求: 频带范围0.9~1.1GHz输入端口的回波损耗>20dB频带…

STL算法篇之拷贝修改类算法

STL算法篇之拷贝修改类算法 拷贝类算法copy与copy_backwardremove与remove_copyremove_if与remove_copy_if 修改类算法replace与replace_copyreplace_if与replace_copy_ifiter_swap与swap与swap_range、unique与unique_copy 拷贝类算法 1.copy 区间拷贝 2.copy_backward 逆向拷…

Redis双写一致性?

双写一致性:当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致。 Redis作为缓存,mysql的数据如何与redis进行同步呢?(双写一致性) 1.我们当时做排行榜业务时,把历史榜…

CentOS7中安装docker并配置阿里云加速器

文章目录 一、docker的安装二、docker的卸载三、配置加速器四、docker-compose安装五、docker-compose卸载六、docker-compose相关命令七、常用shell组合 一、docker的安装 参考:https://docs.docker.com/engine/install/centos 本文内容是基于:CentOS L…

Python 算法基础篇:大O符号表示法和常见时间复杂度分析

Python 算法基础篇:大 O 符号表示法和常见时间复杂度分析 引言 1. 大 O 符号表示法 a ) 大 O 符号的定义 b ) 示例代码 2. 常见时间复杂度分析总结 引言 在分析和比较算法的性能时,时间复杂度是一项重要的指标。而大 O 符号表示法是用来描述算法时间复杂…

Redis 从入门到精通【进阶篇】之Lua脚本详解

文章目录 0. 前言1. Redis Lua脚本简介1.1 Lua脚本介绍Lua语言概述:Lua脚本的特点: 1.2 Redis中为何选择LuaLua与Redis的结合优势Lua脚本在Redis中的应用场景 2. Redis Lua脚本的执行流程1. 加载脚本:1.1 脚本缓存机制:1.2 脚本加…

C++ 可变参数函数用法与template模板泛型编程

目录 1、可变参数函数 (1)定义 (2)常用使用场景 2、template模板用法 1、可变参数函数 (1)定义 可变参数函数的可变参数一般使用省略号表示,如下: void func(int a,...);{} &…

牛P!安卓渗透神器PhoneSploit-Pro

工具介绍 一种集成的黑客工具,可使用ADB(Android Debug Bridge) 和Metasploit-Framework完成自动化,一键获取 Meterpreter 会话。 关注【Hack分享吧】公众号,回复关键字【230524】获取下载链接 如果设备打开了 ADB 端口,该工具可…

关于Context和ContextImpl还有ContextWrapper的关系

关于Context和ContextImpl还有ContextWrapper的关系 1.Context和ContextImpl还有ContextWrapper的关系 ​ 图一.Context和ContextImpl还有ContextWrapper的关系示意图 1.1.ContextImpl是Context的实现类 从Context和ContextImpl的源代码中,可以看出Context是一个抽象类,具体…

pytorch+CRNN实现

最近接触了一个仪表盘识别的项目,简单调研以后发现可以用CRNN来做。但是手边缺少仪表盘数据集,就先用ICDAR2013试了一下。 结果遇到了一系列坑。为了不使读者和自己在以后的日子继续遭罪。我把正确的代码发到下面了。 1)超参数请不要调整&am…

实体店搭建多用户商城系统有什么好处

现在很多的线下店铺都开始慢慢的转型线上了,想线上线下相结合,但是最近很多的商家都在问什么样的B2B2C商城系统开发适合线下店铺呢?这个问题今天加速度jsudo小编给大家一起整理如下,相信商家看完后就知道如何选择一款合适的商城系统了。 一、…

Spring Batch之读数据—读XML文件(三十二)

一、XML格式文件解析 XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性,给数据集成与交换带来了极大的方便。XML在Java领域的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是…