在前端开发中,我们经常需要处理一些数据集合,比如数组、对象等。ES6 中新增了 Set 和 Map 两种数据结构,它们可以更加方便地管理数据,让我们的开发效率更高。
Set
Set 是一种类似于数组的数据结构,但是它的成员都是唯一的,没有重复的值。Set 可以用来去除数组中的重复项。
创建 Set
可以通过以下方式创建一个 Set:
const set = new Set([1, 2, 3]); console.log(set); // Set {1, 2, 3}
也可以通过 add 方法向 Set 中添加元素:
const set = new Set(); set.add(1); set.add(2); set.add(3); console.log(set); // Set {1, 2, 3}
Set 的方法
Set 有以下常用的方法:
add(value)
:向 Set 中添加一个值,返回 Set 对象本身。delete(value)
:删除 Set 中指定的元素,返回一个布尔值,表示删除是否成功。has(value)
:判断 Set 中是否存在指定元素,返回一个布尔值。clear()
:清空 Set 中所有元素。size
:返回 Set 中元素的个数。
Set 的遍历
Set 可以使用 for...of 循环遍历:
const set = new Set([1, 2, 3]); for (let item of set) { console.log(item); }
另外,Set 还有以下方法可以遍历:
keys()
:返回一个包含 Set 中所有键的迭代器。values()
:返回一个包含 Set 中所有值的迭代器。entries()
:返回一个包含 Set 中所有键值对的迭代器。
Map
Map 是一种键值对的数据结构,它与对象的区别在于,Map 的键可以是任意类型,而对象的键只能是字符串或 Symbol 类型。
创建 Map
可以通过以下方式创建一个 Map:
const map = new Map([ ['name', '张三'], ['age', 18] ]); console.log(map); // Map(2) {"name" => "张三", "age" => 18}
也可以通过 set 方法向 Map 中添加元素:
const map = new Map(); map.set('name', '张三'); map.set('age', 18); console.log(map); // Map(2) {"name" => "张三", "age" => 18}
Map 的方法
Map 有以下常用的方法:
set(key, value)
:向 Map 中添加一个键值对,返回 Map 对象本身。get(key)
:获取 Map 中指定键的值,如果不存在则返回 undefined。delete(key)
:删除 Map 中指定的键值对,返回一个布尔值,表示删除是否成功。has(key)
:判断 Map 中是否存在指定键,返回一个布尔值。clear()
:清空 Map 中所有键值对。size
:返回 Map 中键值对的个数。
Map 的遍历
Map 可以使用 for...of 循环遍历:
const map = new Map([ ['name', '张三'], ['age', 18] ]); for (let item of map) { console.log(item); }
另外,Map 还有以下方法可以遍历:
keys()
:返回一个包含 Map 中所有键的迭代器。values()
:返回一个包含 Map 中所有值的迭代器。entries()
:返回一个包含 Map 中所有键值对的迭代器。
总结
Set 和 Map 是 ES6 中新增的数据结构,它们可以更加方便地管理数据。Set 可以用来去除数组中的重复项,而 Map 则是一种键值对的数据结构。在实际开发中,我们可以根据实际需要选择使用哪种数据结构。
示例代码:
// Set const arr = [1, 2, 2, 3, 3, 3]; const set = new Set(arr); console.log(set); // Set {1, 2, 3} // Map const map = new Map([ ['name', '张三'], ['age', 18] ]); console.log(map.get('name')); // 张三
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6588d02aeb4cecbf2ddf1c7b