【问题标题】:Javascript Map vs array of tuples [duplicate]Javascript Map与元组数组[重复]
【发布时间】:2020-08-22 15:27:26
【问题描述】:

我只是想了解 javascript ES6 Maps(即 let m = new Map())如何具有 0(1) 的查找时间。我对 ES6 Maps 的理解是它的数据结构是基于元组数组的。您甚至可以在 Maps 的构造函数中使用元组数组。基本上,我的问题是:

怎么样

let t = [[1,'hi'], [2,'bye']]

不同于

let m = new Map([[1,'hi'], [2,'bye']])

第一种情况显然会阻止持续查找。 ES6 Map 如何实现常量查找?它们的底层数据结构是什么?

【问题讨论】:

  • Map 更像{1:'hi', 2:'bye'},其中每个键都是对象的属性
  • Map 就像一个对象,但它可以有任何值作为键,而不仅仅是字符串和符号。
  • "它的数据结构基于一个元组数组" - 没有。它的构造函数采用这种格式的数据(实际上是任何可迭代的元组)并不意味着内部数据结构是一个(散列)查找映射。
  • @Bergi 那么订单是如何保存的呢?
  • @EricGrossman 有很多方法,最简单的方法是在哈希定位条目旁边按插入顺序使用单独的条目列表。看来这是what V8 uses(或者至少过去是这样)。

标签: javascript es6-map


【解决方案1】:

一个合理的假设可能是使用 Hash-Map 数据结构进行 O(1) 查找。

也可能 Map 元组中的第一个元素可能使用键值对中的 Object 映射到数组的索引。所以当一个特定的键被调用时,它可能会引用这个对象。

【讨论】:

    【解决方案2】:

    Map 类似于 Object ,并且 map 中的键存储在 Order 中,而 Object 则不是。它又是一个可迭代的数据结构,它不在 Object 中。所以它实现了不断的查找。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-26
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多