【发布时间】: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