在 ES6 中,我们已经看到了许多新的数据结构,比如 Set 和 Map。而在 ES9 中,这两种数据结构又有了新的功能和特性,让我们更加方便地处理数据。
Set
Set 是一种类似于数组的数据结构,它的特点是成员的值都是唯一的,没有重复的值。Set 对象可以像数组一样进行迭代,并且具有以下常用方法:
- add(value):向集合中添加元素,返回集合本身。
- delete(value):删除集合中指定的元素,返回一个布尔值,表示是否删除成功。
- has(value):判断集合中是否包含指定的元素,返回一个布尔值。
- clear():清空集合中的所有元素。
- size:获取集合中元素的个数。
而在 ES9 中,Set 还新增了以下几个方法:
1. Set.prototype.intersection()
intersection() 方法返回一个新的 Set 对象,包含当前集合和指定 Set 集合中都存在的元素。
const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4]); const set3 = new Set([...set1].intersection(set2)); // set3 中包含了 2 和 3
2. Set.prototype.difference()
difference() 方法返回一个新的 Set 对象,包含当前集合中有但指定 Set 集合中没有的元素。
const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4]); const set3 = new Set([...set1].difference(set2)); // set3 中包含了 1
3. Set.prototype.union()
union() 方法返回一个新的 Set 对象,包含当前集合和指定 Set 集合中所有的元素。注意,不会有重复的元素。
const set1 = new Set([1, 2, 3]); const set2 = new Set([2, 3, 4]); const set3 = new Set([...set1].union(set2)); // set3 中包含了 1, 2, 3, 4
Map
Map 是一种键值对的数据结构,其中的键和值可以是任何类型的数据。Map 对象可以像对象一样进行迭代,并且具有以下常用方法:
- set(key, value):给 Map 中指定的键名设置值,返回 Map 本身。
- get(key):获取 Map 中指定键名对应的值,如果找不到该键,则返回 undefined。
- has(key):判断 Map 中是否包含指定的键名,返回一个布尔值。
- delete(key):删除 Map 中指定的元素,返回一个布尔值,表示是否删除成功。
- clear():清空 Map 中的所有元素。
- size:获取 Map 中元素的个数。
而在 ES9 中,Map 还新增了以下几个方法:
1. Map.prototype.merge()
merge() 方法用于将当前 Map 对象和指定的 Map 对象合并成一个新的 Map 对象。如果存在相同的键名,则后者覆盖前者。
const map1 = new Map([['a', 1], ['b', 2], ['c', 3]]); const map2 = new Map([['b', 4], ['d', 5]]); const map3 = new Map([...map1].merge(map2)); // map3 中包含了 {'a'=>1, 'b'=>4, 'c'=>3, 'd'=>5}
2. Map.prototype.mapKeys()
mapKeys() 方法用于将当前 Map 对象中的所有键名都应用指定的函数,并返回一个新的 Map 对象。
const map1 = new Map([['a', 1], ['b', 2], ['c', 3]]); const map2 = new Map([...map1].mapKeys(key => key.toUpperCase())); // map2 中包含了 {'A'=>1, 'B'=>2, 'C'=>3}
3. Map.prototype.mapValues()
mapValues() 方法用于将当前 Map 对象中的所有键值都应用指定的函数,并返回一个新的 Map 对象。
const map1 = new Map([['a', 1], ['b', 2], ['c', 3]]); const map2 = new Map([...map1].mapValues(value => value * 2)); // map2 中包含了 {'a'=>2, 'b'=>4, 'c'=>6}
总结
ES9 中的 Set 和 Map 数据结构的新功能和特性,让我们在前端开发中更加灵活和便捷地处理数据。他们的使用方式简单明了,对编写高效且易于阅读的代码非常有帮助。在实际开发中,我们应该充分利用 Set 和 Map 这两种数据结构,提高代码的效率和质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645d956c968c7c53b0000bab