在 ES6 中,Map 和 Set 是两个重要的数据结构。它们的高级用法可以让前端开发变得更加高效和便捷。本文将为大家介绍 Map 和 Set 的高级用法,帮助大家更好地理解和掌握这两个数据结构。
Map 的高级用法
1. Map 的迭代
Map 提供了四种迭代器。分别是:keys()
、values()
、entries()
和 forEach()
,它们都可以用来遍历 Map 对象。
-- -------------------- ---- ------- ----- ----- - --- ------ -------------- --------- -------------- -------- -------------- --------- -- -- ------ -- --- ------ --- -- ------------- - ----------------- - --- ------ ----- -- --------------- - ------------------- - --- ------ ---- -- ---------------- - -------------------- --------- - -- -- ------- -- --------------------- ---- ---- -- - ------------------ ---- ----- ---
2. Map 的默认值
当 get() 方法从一个不存在的 key 中取值时,返回的是 undefined。但是,如果我们想要一个默认值来代替 undefined,可以给 Map 构造函数的参数传一个函数。
function getDefault() { return 'default value'; } const myMap = new Map([[1, 'one'], [2, 'two']]); const notExists = 5; const val = myMap.get(notExists) || getDefault(); console.log(val); // 'default value'
还可以使用 get() 的第二个参数来设置默认值。
const myMap = new Map([[1, 'one'], [2, 'two']]); const notExists = 5; const val = myMap.get(notExists, 'default value'); console.log(val); // 'default value'
3. Map 中嵌套 Map
Map 对象中的值可以是任何数据类型。所以我们可以使用另一个 Map 作为值来嵌套 Map 对象。
const parentMap = new Map(); const childMap = new Map(); childMap.set('a', 'alpha'); childMap.set('b', 'beta'); childMap.set('g', 'gamma'); parentMap.set('childMap', childMap); console.log(parentMap.get('childMap').get('a')); // 'alpha'
Set 的高级用法
1. Set 的迭代
和 Map 一样,Set 也有四个迭代器,分别是:keys()
、values()
、entries()
和 forEach()
。它们也可以用来遍历 Set 对象。
-- -------------------- ---- ------- ----- ----- - --- --------- ---- ------ --- ------ ----- -- ------------- - ------------------- - --- ------ ----- -- --------------- - ------------------- - --- ------ ----- ------ -- ---------------- - ---------------- ------- - --------------------- ---- ---- -- - ------------------ ---- ----- ---
2. Set 的数组操作
Set 可以用来处理数组操作。比如,取交集、并集和差集。
-- -------------------- ---- ------- ----- - - --- ------- -- ---- ----- - - --- ------- -- ---- -- -- ----- ------------ - --- ------------------- -- ----------- -------------------------- -- --- - -- - - -- -- ----- ----- - --- ---------- ------- ------------------- -- --- - -- -- -- - - -- -- ----- ---------- - --- ------------------- -- ------------ ------------------------ -- --- - - -
3. Set 的链式操作
Set 对象的操作可以链式调用,这样可以让代码更加清晰。
const mySet = new Set([1, 2, 3]) .add(4) .delete(1) .clear() .add(5); console.log(mySet); // Set { 4, 5 }
总结
Map 和 Set 是 ES6 中两个十分重要的数据结构。它们的高级用法可以让开发者更加高效地处理数据。本文介绍了 Map 和 Set 的多种高级用法,包括迭代、默认值、嵌套、数组操作和链式操作。相信读完该文章,大家对 Map 和 Set 的理解会更深入和进阶。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/659210fbeb4cecbf2d6f90e2