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
目录
相关文章
|
5天前
|
存储 JavaScript 前端开发
JavaScript进阶-Map与Set集合
【6月更文挑战第20天】JavaScript的ES6引入了`Map`和`Set`,它们是高效处理集合数据的工具。`Map`允许任何类型的键,提供唯一键值对;`Set`存储唯一值。使用`Map`时,注意键可以非字符串,用`has`检查键存在。`Set`常用于数组去重,如`[...new Set(array)]`。了解它们的高级应用,如结构转换和高效查询,能提升代码质量。别忘了`WeakMap`用于弱引用键,防止内存泄漏。实践使用以加深理解。
|
6天前
|
JSON JavaScript 前端开发
【JavaScript】JavaScript中的深拷贝与浅拷贝详解:基础概念与区别
JavaScript 中,理解数据拷贝的深浅至关重要。浅拷贝(如扩展运算符`...`、`Object.assign()`)仅复制对象第一层,共享内部引用,导致修改时产生意外联动。深拷贝(如自定义递归函数、`_.cloneDeep`或`JSON.parse(JSON.stringify())`)创建独立副本,确保数据隔离。选择哪种取决于性能、数据独立性和资源需求。深拷贝虽慢,但确保安全;浅拷贝快,但需小心引用共享。在面试中,理解这些概念及其应用场景是关键。
14 4
【JavaScript】JavaScript中的深拷贝与浅拷贝详解:基础概念与区别
|
1天前
|
缓存 JavaScript 前端开发
js开发代码片段与小技巧
js开发代码片段与小技巧
|
1天前
|
XML 前端开发 JavaScript
HTML、CSS、JavaScript有什么区别
HTML、CSS、JavaScript有什么区别
|
4天前
|
存储 算法 NoSQL
C++一分钟之-map与set容器详解
【6月更文挑战第21天】C++ STL的`map`和`set`是基于红黑树的关联容器,提供有序存储和高效查找。`map`存储键值对,键唯一,值可重复;`set`仅存储唯一键。两者操作时间复杂度为O(log n)。常见问题包括键的唯一性和迭代器稳定性。自定义比较函数可用于定制排序规则,内存管理需注意适时释放。理解和善用这些工具能提升代码效率。
10 3
|
5天前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
6天前
|
存储 编译器 C++
|
3天前
|
JavaScript 前端开发 异构计算
JS中重排和重绘的区别是什么?
JS中重排和重绘的区别是什么?
12 1
|
3天前
|
JavaScript 前端开发
JS中浅拷贝和深拷贝的区别
JS中浅拷贝和深拷贝的区别
8 0
|
13天前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。