前言:用于面试题记录。
Map和Object共同点:都是用于存储键值对的数据结构,但它们在一些方面有所不同。
-
键类型:
Object
的键只能是字符串或Symbol类型。Map
的键可以是任意类型,包括基本数据类型(如字符串、数字、布尔值等)和引用数据类型(如对象、数组等)。
-
键值对的顺序:
Object
中的键值对没有固定的顺序,即遍历时无法保证键值对的顺序。Map
中的键值对是有序的,即遍历时会按照插入的顺序进行遍历。
-
键值对数量的获取:
Object
可以使用Object.keys(obj).length
获取键值对的数量。Map
可以使用map.size
属性获取键值对的数量。
-
方法和操作:
Object
有一些内置的方法和操作符(如obj[key]
、Object.keys(obj)
、Object.values(obj)
等)可以用于操作对象。Map
则提供了一系列的方法和操作符(如map.get(key)
、map.set(key, value)
、map.has(key)
等)来操作和访问键值对。
-
其他特性:
Object
是 JavaScript 中的基本数据类型之一,常用于创建对象。Map
是ES6新增的数据类型,除了存储键值对外,还提供了更多的方法和功能(如迭代器、forEach循环等)。