js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。

简介: ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。

ES6的Map和Set是两种新的数据结构,它们与普通对象和数组有一些区别:

  1. Map是一种键值对集合,它的键可以是任意类型,而对象的键只能是字符串或符号。Map中的键值对是有序的,而对象的属性没有顺序。

  2. Set是一种值的集合,它的值是唯一的,不会有重复的值。数组中可以有重复的值,但Set不会保留这些重复值。

  3. Map和Set都是可迭代的,可以使用for...of循环遍历它们的元素。对象和数组也可以使用for...of循环遍历,但需要先获取对象的键或数组的索引。

  4. Map和Set的方法更加丰富,例如Map有get、set、has、delete等方法,Set有add、delete、has等方法。对象和数组也有相应的方法,但数量较少。

示例:

// Map
let map = new Map();
map.set('name', 'Tom');
map.set('age', 18);
console.log(map.get('name')); // 输出 "Tom"
console.log(map.has('age')); // 输出 true
map.delete('age');
console.log(map.size); // 输出 1

// Set
let set = new Set();
set.add('apple');
set.add('banana');
set.add('apple');
console.log(set.size); // 输出 2
console.log(set.has('banana')); // 输出 true
set.delete('banana');
console.log(set.size); // 输出 1
目录
相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
663 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
12月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
346 23
|
Web App开发 JavaScript 前端开发
Node.js开发
Node.js开发
306 13
|
6月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
391 1
|
9月前
|
存储 缓存 JavaScript
Set和Map有什么区别?
Set和Map有什么区别?
614 1
|
6月前
|
存储 算法 容器
set_map的实现+set/map加持秒杀高频算法题锻炼算法思维
`set`基于红黑树实现,支持有序存储、自动去重,增删查效率为O(logN)。通过仿函数可自定义排序规则,配合空间配置器灵活管理内存。不支持修改元素值,迭代器失效需注意。`multiset`允许重复元素。常用于去重、排序及查找场景。
|
10月前
|
存储 JavaScript 前端开发
for...of循环在遍历Set和Map时的注意事项有哪些?
for...of循环在遍历Set和Map时的注意事项有哪些?
668 156
|
编译器 C++ 容器
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
340 2