随着 JavaScript 语言的不断发展,ES10 带来了对 Map 和 Set 类型的更多操作能力。本篇文章将为你介绍 ES10 中对 Map 和 Set 的扩展方法,并提供示例代码,帮助你更好地学习和使用这些新特性。
Map 类型的扩展方法
在 ES10 中,Map 类型新增了四个扩展方法,分别是 Map.prototype.merge()
、Map.prototype.flat()
、Map.prototype.flatMap()
和 Map.prototype.filter()
。
Map.prototype.merge()
Map.prototype.merge()
方法用于将两个 Map 对象合并成一个。它会将参数 Map 对象中的所有键值对都添加到当前 Map 对象中。对于相同的键,则使用后者覆盖前者。
示例代码:
const map1 = new Map([['food', 2], ['water', 1]]); const map2 = new Map([['food', 1], ['shelter', 1]]); const merged = new Map([...map1, ...map2]); console.log(merged.get('food')); // 1 console.log(merged.get('water')); // 1 console.log(merged.get('shelter')); // 1
Map.prototype.flat()
Map.prototype.flat()
方法用于将 Map 对象的键值对打散到数组中。它类似于数组的 flat()
方法,可以用于将多维的 Map 对象转化为扁平的数组。
示例代码:
const map = new Map([['one', { value: 1 }], ['two', { value: 2 }]]); const flattened = map.flat(); console.log(flattened); // ['one', { value: 1 }, 'two', { value: 2 }]
Map.prototype.flatMap()
Map.prototype.flatMap()
方法是对 Map.prototype.map()
方法的增强,它可以在对 Map 对象的每个键值对进行操作时,得到一个数组并将其打平。与 Map.prototype.map()
方法不同的是,flatMap()
可以自动去除数组中的空项。
示例代码:
const map = new Map([['one', [1, 2]], ['two', [3, 4]]]); const flattened = map.flatMap(([key, value]) => value.map(num => `${key}-${num}`)); console.log(flattened); // ['one-1', 'one-2', 'two-3', 'two-4']
Map.prototype.filter()
Map.prototype.filter()
方法用于过滤 Map 对象中的键值对,它的用法与数组的 filter()
方法类似。它会返回一个新的 Map 对象,该对象包含了满足条件的所有键值对。
示例代码:
const map = new Map([['one', 1], ['two', 2], ['three', 3]]); const filtered = map.filter((value, key) => key !== 'two'); console.log(filtered); // Map { 'one' => 1, 'three' => 3 }
Set 类型的扩展方法
在 ES10 中,Set 类型新增了两个扩展方法,分别是 Set.prototype.union()
和 Set.prototype.intersection()
。
Set.prototype.union()
Set.prototype.union()
方法用于将两个 Set 对象合并成一个。它会将参数 Set 对象中的所有元素都添加到当前 Set 对象中。方法会自动去重,相同的元素只会被添加一次。
示例代码:
const set1 = new Set([1, 2, 3]); const set2 = new Set([3, 4, 5]); const union = new Set([...set1, ...set2]); console.log(union); // Set { 1, 2, 3, 4, 5 }
Set.prototype.intersection()
Set.prototype.intersection()
方法用于获取两个 Set 对象的交集。它会返回一个新的 Set 对象,该对象包含了两个 Set 对象中都存在的元素。
示例代码:
const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4]); const intersection = new Set([...set1].filter(x => set2.has(x))); console.log(intersection); // Set { 2, 3 }
总结
ES10 中对 Map 和 Set 类型的扩展方法,可以方便地对这两种数据结构进行更灵活的操作。通过本文的介绍和示例代码,相信你已经掌握了这些新特性的使用方法,并且能够更加方便地应用到实际开发中去。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6533248a7d4982a6eb688b9c