在 JavaScript 中,Map 和 Set 是两种非常常用的数据结构,它们可以帮助我们更方便的存储和操作数据。在 ES10 中,这两个结构也得到了一些新的扩展用法,本文将详细介绍这些扩展用法并给出具体示例。
Map
扩展用法一:在 Map 中插入多个键值对
在 ES10 中,我们可以使用新的 Map
构造函数的扩展形式 new Map(iterable)
来在创建 Map
实例时传入多个键值对,而不需要每次都使用 set
方法逐个插入:
const map = new Map([ ['foo', 1], ['bar', 2], ['baz', 3] ]); console.log(map.get('foo')); // 1 console.log(map.get('bar')); // 2 console.log(map.get('baz')); // 3
扩展用法二:查找 Map 中第一个符合条件的键值对
在 ES10 中,我们可以使用新的 Map.prototype.find
方法来查找 Map
中第一个符合条件的键值对:
const map = new Map([ ['foo', 1], ['bar', 2], ['baz', 3] ]); const entry = map.find(([key, value]) => key.startsWith('b')); console.log(entry); // ['bar', 2]
扩展用法三:过滤 Map 中不符合条件的键值对
在 ES10 中,我们可以使用新的 Map.prototype.filter
方法来过滤掉 Map
中不符合条件的键值对,返回一个新的 Map
实例:
const map = new Map([ ['foo', 1], ['bar', 2], ['baz', 3] ]); const filteredMap = new Map([...map].filter(([key, value]) => key.startsWith('b'))); console.log(filteredMap); // Map { 'bar' => 2, 'baz' => 3 }
Set
扩展用法一:在 Set 中插入多个值
与 Map
一样,我们可以使用新的 Set
构造函数的扩展形式 new Set(iterable)
来在创建 Set
实例时传入多个值,而不需要每次都使用 add
方法逐个插入:
const set = new Set(['foo', 'bar', 'baz']); console.log(set.has('foo')); // true console.log(set.has('bar')); // true console.log(set.has('baz')); // true
扩展用法二:查找 Set 中第一个符合条件的值
在 ES10 中,我们可以使用新的 Set.prototype.find
方法来查找 Set
中第一个符合条件的值:
const set = new Set(['foo', 'bar', 'baz']); const value = set.find(value => value.startsWith('b')); console.log(value); // 'bar'
扩展用法三:过滤 Set 中不符合条件的值
在 ES10 中,我们可以使用新的 Set.prototype.filter
方法来过滤掉 Set
中不符合条件的值,返回一个新的 Set
实例:
const set = new Set(['foo', 'bar', 'baz']); const filteredSet = new Set([...set].filter(value => value.startsWith('b'))); console.log(filteredSet); // Set { 'bar', 'baz' }
总结
在 ES10 中,Map
和 Set
都得到了一些新的扩展用法,这些新的用法可以帮助我们更方便的存储和操作数据。在编写代码时,我们可以根据实际需要选择使用这些新的扩展用法来提高代码的可读性和效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653485f87d4982a6eb930c6d