随着前端技术的不断发展和更新,ES12 中的 Map 和 Set 方法成为了越来越多前端开发者使用的工具。本文将深入探讨 ES12 中 Map 和 Set 方法的使用优化,帮助读者更好地掌握这两个方法。
Map 方法
Map 是 ES6 新加入的数据类型,它可以将一组键值对存储为一个整体,可以包含任意类型的数据作为键名或者值。ES12 中的 Map 方法在 ES6 的基础上做出了进一步的优化,提供了以下实用的功能:
1. map.forEach() 方法
Map 对象的 forEach() 方法可以用于遍历 Map 中的每一个键值对,具体的语法如下:
map.forEach(function callbackFn(value, key, map) { // 处理Map对象中的键值对 }, thisArg);
其中,callbackFn 是对每个键值对执行的回调函数,value 和 key 分别表示键值对的值和键名,map 表示整个 Map 对象。thisArg 是可选参数,默认为 undefined,指定 callbackFn 函数执行时的 this 值。
例如,下面的代码演示了如何使用 forEach() 方法对一个 Map 对象进行遍历:
const myMap = new Map(); myMap.set('key1', 'value1'); myMap.set('key2', 'value2'); myMap.forEach(function(value, key) { console.log(`${key} = ${value}`); });
输出结果为:
key1 = value1 key2 = value2
2. map.filter() 方法
Map 对象的 filter() 方法可以用于筛选出符合条件的键值对并返回一个新的 Map 对象,具体的语法如下:
const newMap = map.filter(function callbackFn(value, key, map) { // 判断条件为真时,返回 true // 判断条件为假时,返回 false }, thisArg);
其中,callbackFn 函数与 forEach() 方法的参数相同,newMap 表示返回的新的 Map 对象。
例如,下面的代码演示了如何使用 filter() 方法对一个 Map 对象进行筛选:
const myMap = new Map(); myMap.set('key1', 'value1'); myMap.set('key2', 'value2'); const filteredMap = new Map([...myMap].filter(([key, value]) => key === 'key1')); console.log(filteredMap.get('key1')); // 'value1' console.log(filteredMap.get('key2')); // undefined
3. map.map() 方法
Map 对象的 map() 方法可以用于将 Map 对象中的键值对映射为一个新的值,并返回一个新的 Map 对象。具体的语法如下:
const newMap = map.map(function callbackFn(value, key, map) { // 返回一个映射后的新的键值对 }, thisArg);
其中,callbackFn 函数与 forEach() 方法的参数相同,newMap 表示返回的新的 Map 对象。
例如,下面的代码演示了如何使用 map() 方法对一个 Map 对象进行映射:
const myMap = new Map(); myMap.set('key1', 'value1'); myMap.set('key2', 'value2'); const mappedMap = new Map([...myMap].map(([key, value]) => [key.toUpperCase(), value.toUpperCase()])); console.log(mappedMap.get('KEY1')); // 'VALUE1' console.log(mappedMap.get('KEY2')); // 'VALUE2'
Set 方法
Set 是 ES6 中新增的数据类型,它允许存储一个不重复的值的集合,并且可以包含任意类型的数据。ES12 中的 Set 方法在 ES6 的基础上做出了进一步的优化,提供了以下实用的功能:
1. set.forEach() 方法
Set 对象的 forEach() 方法可以用于遍历 Set 中的每一个值,具体的语法如下:
set.forEach(function callbackFn(value, key) { // 处理Set对象中的值 }, thisArg);
其中,callbackFn 是对每个值执行的回调函数,value 表示 Set 中的每一个值,key 表示 Set 中的每一个值(用于兼容 Map 对象的 API,实际上没有意义)。thisArg 是可选参数,默认为 undefined,指定 callbackFn 函数执行时的 this 值。
例如,下面的代码演示了如何使用 forEach() 方法对一个 Set 对象进行遍历:
const mySet = new Set(); mySet.add('value1'); mySet.add('value2'); mySet.forEach(function(value) { console.log(value); });
输出结果为:
value1 value2
2. set.filter() 方法
Set 对象的 filter() 方法可以用于筛选出符合条件的值并返回一个新的 Set 对象,具体的语法如下:
const newSet = set.filter(function callbackFn(value) { // 判断条件为真时,返回 true // 判断条件为假时,返回 false }, thisArg);
其中,callbackFn 函数与 forEach() 方法的参数相同,newSet 表示返回的新的 Set 对象。
例如,下面的代码演示了如何使用 filter() 方法对一个 Set 对象进行筛选:
const mySet = new Set(); mySet.add('value1'); mySet.add('value2'); const filteredSet = new Set([...mySet].filter(value => value === 'value1')); console.log(filteredSet.has('value1')); // true console.log(filteredSet.has('value2')); // false
3. set.map() 方法
Set 对象的 map() 方法可以用于将 Set 中的值映射为一个新的值,并返回一个新的 Set 对象。具体的语法如下:
const newSet = set.map(function callbackFn(value) { // 返回一个映射后的新的值 }, thisArg);
其中,callbackFn 函数与 forEach() 方法的参数相同,newSet 表示返回的新的 Set 对象。
例如,下面的代码演示了如何使用 map() 方法对一个 Set 对象进行映射:
const mySet = new Set(); mySet.add('value1'); mySet.add('value2'); const mappedSet = new Set([...mySet].map(value => value.toUpperCase())); console.log(mappedSet.has('VALUE1')); // true console.log(mappedSet.has('VALUE2')); // true
总结
ES12 中 Map 和 Set 方法提供了非常实用的功能,可以让我们在编写前端代码时更加便捷和高效。在使用这些方法时,我们需要仔细查看官方文档中的 API,了解每个方法的语法和参数含义,以充分发挥它们的优势。希望本文对您有所帮助,谢谢阅读!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e4643bf6b2d6eab3fcd231