Javascript:有没有理由在哈希表上为键值对使用两个独立的数组?

Javascript:有没有理由在哈希表上为键值对使用两个独立的数组?,javascript,arrays,data-structures,key-value,Javascript,Arrays,Data Structures,Key Value,我看到一些代码,它将键、值对存储在两个数组中。此存储的唯一目的是将2个数组用作哈希表,1个数组存储键,其他值。这样做有什么性能优势吗 此特定示例由2个字符串数组组成。。e、 g q[0] = "key" v[0] = "value" 不,散列密钥不是一个非常昂贵的操作。当然,在某种程度上,这并不能证明让这个示例作为真正的哈希表替代品工作所需要的难看的混乱是合理的。JavaScript中的数组几乎都是哈希表,它们将键限制为整数。它们不是像大多数语言中那样由偏移量(索引)访问的连续内存板的“真”数

我看到一些代码,它将键、值对存储在两个数组中。此存储的唯一目的是将2个数组用作哈希表,1个数组存储键,其他值。这样做有什么性能优势吗

此特定示例由2个字符串数组组成。。e、 g

q[0] = "key" v[0] = "value"

不,散列密钥不是一个非常昂贵的操作。当然,在某种程度上,这并不能证明让这个示例作为真正的哈希表替代品工作所需要的难看的混乱是合理的。

JavaScript中的数组几乎都是哈希表,它们将键限制为整数。它们不是像大多数语言中那样由偏移量(索引)访问的连续内存板的“真”数组。我的猜测是,最初的作者假设JavaScript中的数组是在经典意义上实现的


因此,这实际上是做
q[“key”]=“value”
和将q作为对象而不是数组效率的两倍。

我想这可能只是一种偏好,但多年来一直是习惯用法。例如,在C语言中,一个数组有一个类型,要有一个不同类型的数组(即数组[key0]、数组[value0]、数组[key1]、数组[value1]),比简单地将键和值放在不同的数组中要困难得多。对我来说,如果键和值在同一个数组中,那将是一场噩梦,因为我必须始终记住将任何索引加倍到该数组中,然后对值进行递增。对我懒惰的大脑来说太多了

使用这种可怕景象的哈希表会降低性能吗?不会。你必须迭代键表的每个元素才能找到你想要的。适当的哈希表倾向于使用一种算法,该算法生成一个可复制的位置,或者至少是一个位置的起点。阅读一本关于数据结构的基础计算机科学教科书,看看为什么在一个非常大的哈希表中这会成为问题。