在 ECMAScript 2016 中,新增了 Set 和 Map 两种数据结构,它们可以用来存储一组唯一的值和键值对。这两种数据结构在实际开发中非常实用,本文将详细介绍它们的用法和特性。
Set 数据结构
Set 是一种无序的集合,其中每个元素都是唯一的。它的主要特点如下:
- Set 的元素是唯一的,即不允许重复。
- Set 中的元素是无序的,即不会按照插入的顺序排列。
- Set 中的元素可以是任意类型的值,包括基本类型和对象引用。
创建 Set
创建一个 Set 可以通过以下两种方式:
// 通过 Set 构造函数创建一个 Set const set1 = new Set([1, 2, 3]); // 通过字面量创建一个 Set const set2 = new Set(); set2.add(1); set2.add(2); set2.add(3);
Set 的基本操作
Set 的基本操作包括增加、删除、查询、长度等操作。
-- -------------------- ---- ------- ----- --- - --- ------- -- ---- -- ---- ----------- -- ---- -------------- -- -------- ----------- -- ---- -- -- --- --- --------- -- -
Set 的遍历
Set 的遍历可以通过 for...of 循环、forEach 方法、数组解构等方式进行。
-- -------------------- ---- ------- ----- --- - --- ------- -- ---- -- -------- ---- --- ------ ---- -- ---- - ------------------ - -- ------- ---- ---------------- -- - ------------------ --- -- ------ ----- --- -- -- - ---- -------------- -- ---
Set 和数组的转换
Set 和数组之间可以进行相互转换。
// Set 转为数组 const set = new Set([1, 2, 3]); const arr = Array.from(set); // 数组转为 Set const arr = [1, 2, 3]; const set = new Set(arr);
Map 数据结构
Map 是一种键值对的集合,其中每个键对应一个值。它的主要特点如下:
- Map 中的键是唯一的,即不允许重复。
- Map 中的键值对是无序的,即不会按照插入的顺序排列。
- Map 中的键和值可以是任意类型的值,包括基本类型和对象引用。
创建 Map
创建一个 Map 可以通过以下两种方式:
// 通过 Map 构造函数创建一个 Map const map1 = new Map([['a', 1], ['b', 2], ['c', 3]]); // 通过字面量创建一个 Map const map2 = new Map(); map2.set('a', 1); map2.set('b', 2); map2.set('c', 3);
Map 的基本操作
Map 的基本操作包括增加、删除、查询、长度等操作。
-- -------------------- ---- ------- ----- --- - --- ---------- --- ----- --- ----- ----- -- ----- ------------ --- -- ----- ---------------- -- --------- ------------- -- ---- -- -- --- --- --------- -- -
Map 的遍历
Map 的遍历可以通过 for...of 循环、forEach 方法、数组解构等方式进行。
-- -------------------- ---- ------- ----- --- - --- ---------- --- ----- --- ----- ----- -- -------- ---- --- ------ ----- ------ -- ---- - ---------------- ------- - -- ------- ---- ------------------- ---- -- - ---------------- ------- --- -- ------ --- ------ ----- ------ -- -------------- - ---------------- ------- -
Map 和对象的转换
Map 和对象之间可以进行相互转换。
// Map 转为对象 const map = new Map([['a', 1], ['b', 2], ['c', 3]]); const obj = Object.fromEntries(map); // 对象转为 Map const obj = { a: 1, b: 2, c: 3 }; const map = new Map(Object.entries(obj));
总结
Set 和 Map 是 ECMAScript 2016 中新增的两种数据结构,它们在实际开发中非常实用。本文介绍了它们的用法和特性,包括创建、基本操作、遍历和转换等。希望本文能够对大家理解和使用 Set 和 Map 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65cdada9add4f0e0ff6dddfd