gpt4 book ai didi

javascript - 什么是密集阵列?

转载 作者:可可西里 更新时间:2023-11-01 02:19:16 25 4
gpt4 key购买 nike

我从几页上读到的关于密集数组的解释似乎相互矛盾。我需要一些帮助来理解它是什么。

虽然一些链接(search result 1search result 2)表明它只是一个数组,其中:

  1. 已知数组的元素是特定值;和
  2. 在初始化时分配给数组。

那里的典故是 JavaScript 数组是密集的。

到这里为止一切都有意义。

但是这个声明取自JavaScript Guide on the Mozilla Developer Network (MDN)说:

Since an array's length can change at any time, and data can be stored at non-contiguous locations in the array, JavaScript arrays are not guaranteed to be dense; this depends on how the programmer chooses to use them. In general, these are convenient characteristics; but if these features are not desirable for your particular use, you might consider using typed arrays.

这让我现在很困惑。我的问题是:

MDN 页面上的声明说 JavaScript 数组不能保证密集是什么意思?如果说下面不是密集数组是因为它的一个或多个元素在初始化的时候是undefined,那为什么我上面列出的链接好像说明JavaScript数组确实是密集的?

var array = new Array(1, , 3, ); // [1, undefined, 3, undefined]

最佳答案

“密集”与“稀疏”相对,一般用于存储。例如,这个数组是密集的:

a = [undefined, undefined, 2]

它可以完全像这样存储在内存中:三个位置的序列,前两个是 undefined,第三个是 2

这个数组是稀疏的:

a = []
a[100000000] = 100000000

它不会作为 100000001 个位置的序列存储在内存中,因为这会非常低效。肯定不是 100000000undefined 后跟 100000000。相反,它只是说第 100000000 个是 100000000,并且没有为前 100000000 个元素分配空间。

(实际上,尝试使用 2 而不是 100000000 来执行此操作,您会注意到一件奇怪的事情:Chrome 会将密集数组显示为 [ undefined, undefined, 2],但稀疏的是 [undefined × 2, 2]。)

关于javascript - 什么是密集阵列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39030196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com