介绍
ES2021(也称为 ES12)是 ECMAScript 的最新版本,它引入了一些新的语言特性和增强了现有的功能。其中,Map 和 Set 的新特性是前端开发人员应该关注的重点之一。Map 和 Set 是 JavaScript 中常用的数据结构,它们提供了快速的查找和插入操作,而 ES2021 中的新特性进一步增强了它们的功能和灵活性。
本文将介绍 ES2021 中 Map 和 Set 的新特性,并提供一些示例代码,帮助读者更好地理解和应用它们。
Map 中的新特性
1. 初始化 Map 时可以传入数组
在 ES2021 中,初始化 Map 时可以直接传入一个数组,数组的每个元素都是一个键值对。例如:
const map = new Map([ ['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3'] ]);
这样就可以快速地创建一个包含多个键值对的 Map 对象。
2. 使用 .upsert() 方法更新 Map
在 ES2021 中,Map 对象新增了一个 .upsert() 方法,用于更新 Map 中的键值对。如果键存在,则更新对应的值;如果键不存在,则添加新的键值对。
// javascriptcn.com 代码示例 const map = new Map([ ['key1', 'value1'], ['key2', 'value2'] ]); // 更新已有的键值对 map.upsert('key1', () => 'new value'); // 添加新的键值对 map.upsert('key3', () => 'value3'); console.log(map.get('key1')); // 输出:new value console.log(map.get('key3')); // 输出:value3
3. 使用 .update() 方法更新 Map
另外一个更新 Map 的方法是 .update()。与 .upsert() 不同的是,.update() 只更新已有的键值对,不会添加新的键值对。
// javascriptcn.com 代码示例 const map = new Map([ ['key1', 'value1'], ['key2', 'value2'] ]); // 更新已有的键值对 map.update('key1', () => 'new value'); // 不会添加新的键值对 map.update('key3', () => 'value3'); console.log(map.get('key1')); // 输出:new value console.log(map.get('key3')); // 输出:undefined
Set 中的新特性
1. 初始化 Set 时可以传入数组
与 Map 类似,Set 在 ES2021 中也可以直接传入一个数组来初始化。
const set = new Set(['value1', 'value2', 'value3']);
2. 使用 .upsert() 方法更新 Set
Set 中也新增了 .upsert() 方法,用于更新 Set 中的值。如果值存在,则更新;如果不存在,则添加新的值。
// javascriptcn.com 代码示例 const set = new Set(['value1', 'value2']); // 更新已有的值 set.upsert('value1', () => 'new value'); // 添加新的值 set.upsert('value3', () => 'value3'); console.log(set.has('value1')); // 输出:true console.log(set.has('value3')); // 输出:true
3. 使用 .update() 方法更新 Set
与 Map 类似,Set 中也有一个 .update() 方法,用于更新已有的值。如果值存在,则更新;如果不存在,则不做任何操作。
// javascriptcn.com 代码示例 const set = new Set(['value1', 'value2']); // 更新已有的值 set.update('value1', () => 'new value'); // 不会添加新的值 set.update('value3', () => 'value3'); console.log(set.has('value1')); // 输出:true console.log(set.has('value3')); // 输出:false
总结
ES2021 中 Map 和 Set 的新特性让它们更加灵活和易用。我们可以使用 .upsert() 和 .update() 方法来更新 Map 和 Set 中的键值对和值,同时也可以使用数组来初始化 Map 和 Set。这些新特性可以帮助我们更好地处理数据,提高代码的可读性和可维护性。
示例代码
以下是一些示例代码,演示了 ES2021 中 Map 和 Set 的新特性。
// javascriptcn.com 代码示例 // 初始化 Map const map = new Map([ ['key1', 'value1'], ['key2', 'value2'] ]); // 使用 .upsert() 方法更新 Map map.upsert('key1', () => 'new value'); map.upsert('key3', () => 'value3'); // 使用 .update() 方法更新 Map map.update('key2', () => 'updated value'); map.update('key4', () => 'value4'); console.log(map); // 输出:Map(4) {"key1" => "new value", "key2" => "updated value", "key3" => "value3", "key4" => "value4"} // 初始化 Set const set = new Set(['value1', 'value2']); // 使用 .upsert() 方法更新 Set set.upsert('value1', () => 'new value'); set.upsert('value3', () => 'value3'); // 使用 .update() 方法更新 Set set.update('value2', () => 'updated value'); set.update('value4', () => 'value4'); console.log(set); // 输出:Set(4) {"new value", "updated value", "value3", "value4"}
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6550b07dd2f5e1655da8523c