当前位置: 首页 > 面试题库 >

JavaScript中的地图与对象

微生良策
2023-03-14
问题内容

我刚刚发现了chromestatus.com,在失去了一天的时间后,发现了以下功能条目:

映射:映射对象是简单的键/值映射。

那让我感到困惑。常规JavaScript对象是字典,那么它Map与字典有何不同?从概念上讲,它们是相同的(根据
Map和Dictionary之间的区别是什么?)

chromestatus文档参考也无济于事:

映射对象是键/值对的集合,其中键和值都可以是任意ECMAScript语言值。一个唯一的键值只能出现在地图集合中的一个键/值对中。使用创建地图时选择的比较算法来区分的不同键值。

Map对象可以按插入顺序迭代其元素。必须使用哈希表或其他机制来实现Map对象,这些机制通常平均提供与集合中元素数量成线性关系的访问时间。本Map对象规范中使用的数据结构仅用于描述Map对象所需的可观察语义。它并非旨在成为可行的实施模型。

…对我来说听起来还是一个对象,所以很明显我错过了一些东西。

为什么JavaScript获得了一个(被良好支持的)Map对象?它有什么作用?


问题答案:

根据mozilla:

Map对象可以按插入顺序对其元素进行迭代-for..of循环将为每次迭代返回[key,value]数组。

对象与Maps相似,两者都允许您将键设置为值,检索这些值,删除键以及检测是否在键处存储了某些内容。因此,对象在历史上一直被用作地图;但是,对象和地图之间存在重要差异,因此可以更好地使用地图。

对象具有原型,因此地图中包含默认键。但是,可以使用map =
Object.create(null)绕过它。对象的键是字符串,其中键可以是Map的任何值。您可以轻松获取地图的大小,而不必手动跟踪对象的大小。

当键直到运行时才是未知的,并且所有键都是相同的类型并且所有值都是相同的类型时,请在对象上使用映射。

当存在对单个元素进行操作的逻辑时,请使用对象。

有序可迭代性是开发人员长期以来一直希望使用的功能,部分原因是它确保了所有浏览器的相同性能。所以对我来说,那是很大的。

myMap.has(key)方法将特别方便,而且myMap.size属性也很方便。



 类似资料:
  • 本文向大家介绍JavaScript中的对象与JSON,包括了JavaScript中的对象与JSON的使用技巧和注意事项,需要的朋友参考一下 简介 JSON即JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。 JSON是一种数据交换格式,像XML和YAML一样是一种在各种不同语言间传递结构化信息的方式。从另一方面来说

  • 所以我有一个整数的列表,它是内部的,从这里我可以得到一个Abc的列表,我想把它们映射到map中的一个条目(注意,我们不能从Abc.getIns中获取内部) 这就是我想要的:(但由于我们没有GetInsin,我们不能这样写) 我不知道如何编写它,以获得我想要的映射关系。 已知整数列表:内部 将获取insIds并返回列表的已知函数: 然后是我不确定的:如何将insin映射到AbcId (预期输出:

  • 问题内容: 我目前的理解非常模糊,我倾向于认为map是同步的,而flatMap是异步的,但是我真的无法解决它。 这是一个例子: 我有文件(a ),我想将其复制到服务器上的某些文件中。 本示例摘自一本书。 我可以将所有更改为to ,反之亦然,一切仍然正常。我不知道有什么区别。 问题答案: 用于同步,非阻塞,一对一转换 用于异步(非阻塞)1-to-N转换 区别在方法签名中可见: 取a 并返回a 取a

  • 我刚刚发现了这个特性: Map:Map对象是简单的键/值映射。 映射对象可以按插入顺序迭代其元素。Map对象必须使用哈希表或其他机制来实现,这些机制平均提供的访问时间与集合中的元素数成次线性关系。本地图对象规范中使用的数据结构仅用于描述地图对象所需的可观察语义。它并不打算成为一个可行的实施模式。 …对我来说仍然像是一个对象,所以很明显我错过了什么。 为什么JavaScript获得了一个(支持良好的

  • 我试图让一个类似Java的静态映射对象在Javascript中工作。我不是javascript专家,但我想知道这是否可行。我想做的是: 我正在定义 还有这样一个“类似地图”的物体: 然后,在我定义的函数中: 我的期望是,当使用 返回数字“30”。然而 返回“未定义”。只有 返回正确的金额。 是否可以定义一个对象,例如CONST_AMOUNT_MAP,允许基于预定义的const变量而不是基于cons

  • 问题内容: 我没有用Java理解Maps。建议何时使用地图而不是列表? 提前致谢, 无人 问题答案: Java映射:将键映射到值的对象。映射不能包含重复的键;每个键最多可以映射到一个值。 Java列表:有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 不同之处在于它们是不同的。映射是键/值的映射,是项列表