JavaScript中的new map()和new set()使用详细(new map()和new set()的区别)
简介:
new Map(): 在JavaScript中,new Map()用于创建一个新的 Map 对象。Map 对象是一种键值对的集合,其中的键是唯一的,值可以重复。
new Set(): 在JavaScript中, new Set() 是用来创建一个新的 Set 对象的语法。Set 对象是一种集合,其中的值是唯一的,没有重复的值。 new Set() 可以用来创建一个空的 Set 对象,在创建时传入一个数组或类数组对象,Set 会自动去除重复的值。
new Map()
一、new Map() 基本特性
new Map() 是用来创建一个新的 Map 对象的构造函数。Map 对象保存键值对,并记住键的原始插入顺序。这意味着你可以迭代 Map 对象,按键的插入顺序获取键值对。
Map 对象与普通的对象(使用字符串作为键)不同,因为 Map 可以使用任何类型作为键(包括函数、对象或任何原始值),而不仅仅是字符串或符号。
二、相关方法
1. set(key, value) : 向 Map 对象中添加一个键值对。
2. get(key) : 获取指定键对应的值。
3. has(key) : 判断 Map 对象中是否存在指定的键。
4. delete(key) : 删除指定键及其对应的值。
5. size : 返回 Map 对象中键值对的数量。
6. clear() : 清空 Map 对象中的所有键值对。
7. keys() : 返回一个包含 Map 对象中所有键的迭代器。
8. values() : 返回一个包含 Map 对象中所有值的迭代器。
9. entries() : 返回一个包含 Map 对象中所有键值对的迭代器。
三、基本使用
// 创建一个新的Map对象
let myMap = new Map(); // 1、添加键值对
myMap.set('name', 'Alice');
myMap.set('age', 25); // 2、获取值
console.log(myMap.get('name')); // 输出: "Alice" // 3、检查键是否存在
console.log(myMap.has('age')); // 输出: true // 4、删除键值对
myMap.delete('name');
console.log(myMap.has('name')); // 输出: false // 5、获取Map的大小
console.log(myMap.size); // 输出: 1 // 6、清空Map
myMap.clear();
console.log(myMap.size); // 输出: 0 // 7、遍历键
for (let key of myMap.keys()) {
console.log(key); // 输出: "age"
} // 8、遍历值
for (let value of myMap.values()) {
console.log(value); // 输出: 25
} // 9、遍历键值对
for (let [key, value] of myMap.entries()) {
console.log(`Key: ${key}, Value: ${value}`); // 输出: Key: age, Value: 25
}
new Set()
一、new Set() 基本特性
唯一性:在 Set 中,每个值只出现一次,可以实现简单的数组去重,即使是两个完全相同的对象,它们在 Set 中也只会被存储一次。
无序性:Set 中的元素没有特定的顺序。
二、相关方法
add(value): 向 Set 对象中添加一个值。如果值已存在,则不会进行任何操作。
delete(value): 从 Set 对象中删除一个值。如果值存在,则删除并返回 true;否则,返回 false。
has(value): 返回一个布尔值,表示 Set 对象中是否包含指定的值。
clear(): 清空 Set 对象,移除所有元素。
三、基本使用
let setData = new Set(); // 添加元素
setData .add(1);
setData .add(2);
setData .add(3);
console.log(setData); // setData { 1, 2 ,3 } // 删除元素
setData.delete(2);
console.log(setData); // Set { 1, 3 } // 检查元素是否存在
console.log(setData.has(1)); // true
console.log(setData.has(4)); // false // 遍历元素
setData.forEach(value => console.log(value));
// 输出:
// 1
// 3 // 清空集合
setData.clear();
console.log(setData.size); // 输出: 0,因为集合已被清空 //在创建 Set 时直接传入一个可迭代对象(如数组),来初始化 Set:
let set = new Set([1, 2, 2, 3, 4, 4]);
//简单数组去重
console.log(set); // Set { 1, 2, 3, 4 }
JavaScript中的new map()和new set()使用详细(new map()和new set()的区别)的更多相关文章
- JavaScript中Function Declaration与Function Expression 或者说 function fn(){}和var fn=function(){} 的区别
JavaScript是一种解释型语言,函数声明会在JavaScript代码加载后.执行前被解释,而函数表达式只有在执行到这一行代码时才会被解释. 在JS中有两种定义函数的方式, 1是:var aaa= ...
- javascript中 for循环的一些写法 for length 以及for in 还有 for of 的区别
最近在写一些前端的代码,遇到一个产品列表遍历的问题,正好使用到for 的几种用法,于是研究了下. 代码如下,先说明下goodslist 是一个产品列表 形如这样的数据格式 { ‘types’:1, ' ...
- JavaScript中setInterval常见的问题(setInterval第一个参数加引号与不加引号区别)
- javascript中面向对象的两种构建方式(构造函数)和(原型模式的区别)
1.构造函数模式--->alert的结果为false <!DOCTYPE html> <html lang="en"> <head> &l ...
- JavaScript中对象的属性
在JavaScript中,属性决定了一个对象的状态,本文详细的研究了它们是如何工作的. 属性类型 JavaScript中有三种不同类型的属性:命名数据属性(named data properties) ...
- javascript中的undefined与null的区别
一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = null; 上面代码中,a变量分别被赋值 ...
- 【转】javascript中not defined、undefined、null以及NaN的区别
原文链接(点击跳转) 第一:not defined 演示代码: <span style="font-size:12px;"><span style=" ...
- ES6新特性:Javascript中的Map和WeakMap对象
Map对象 Map对象是一种有对应 键/值 对的对象, JS的Object也是 键/值 对的对象 : ES6中Map相对于Object对象有几个区别: 1:Object对象有原型, 也就是说他有默认的 ...
- 由实现JavaScript中的Map想到的
项目中要用到JavaScript中的Map数据类型,它不像JDK那样有自带的,怎么办?搜了找到一个不错的(http://darkmasky.iteye.com/blog/454749).用这个可以满足 ...
- JavaScript中Map和ForEach的区别
译者按: 惯用Haskell的我更爱map. 原文: JavaScript — Map vs. ForEach - What’s the difference between Map and ForE ...
随机推荐
- 用tkinter编写一个简单的登录注册界面
代码: from tkinter import * window = Tk() window.geometry('400x300+500+150') window.title('xxx系统') Can ...
- 必应每日一图url(可直接使用)
必应每日一图url 首先放出地址,后面是一堆心路历程(一堆废话),只为链接的可以不用看 https://baotangguo.cn:8081/ 最初 博客园装饰的时候(虽然是抄的),想着上面背景图 ...
- c#获取开机时间
public static DateTime OpenCom() { TimeSpan t = TimeSpan.FromMilliseconds(System.Environment.TickCou ...
- 算法金 | 再见,支持向量机 SVM!
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 今日 170+/10000 一.SVM概述 定义与基本概念 支持向量机(SVM)是一种 ...
- python中使用time.pref_counter()精确计时
time.pref_counter()返回一个CPU级别的精确时间值,以秒为单位. 它通常用于测量某段程序的运行时间,因此取两次调用pref_counter()的差值才有意义. import time ...
- MFC 好像不太智能
我的想法就是这个MFC可能十靠鼠标和点击啥的偏主力 自己配消息处理函数容易出错,一旦代码坏了,不可逆向寻找失去的代码 多以能用鼠标设计的尽量用用编译器提供的界面去设计 当然啊这个API还是要自己找 这 ...
- FlashDuty Changelog 2023-09-07 | 新增深色模式与主题配置
FlashDuty:一站式告警响应平台,前往此地址免费体验! FlashDuty 现在已经全面支持了深色模式,这为您提供了更柔和的光线和舒适的界面外观.并且,您可以根据自己的喜好和使用环境动态切换深色 ...
- 可观测性平台夜莺开源项目发布V6正式版!
夜莺开源项目在2023.7月底发布了V6版本,这个版本开始,项目目标不止于做一款开源监控系统,而是要做一款开源可观测性平台,不过路漫漫其修远兮,初期只是把日志数据源引入并完成了基本的可视化,后续会着力 ...
- 1. Elasticsearch 入门安装与部署
引言 Elasticsearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java语言开发的,并作为 ...
- 高德解析城市的分析,根据高德的经纬度获取城市cityCode
高德解析城市的分析,根据高德的经纬度获取城市cityCode http://restapi.amap.com/v3/geocode/regeo?output=json&location=110 ...