最近我不得不制作一个具有大索引值的数组(由于插件限制)。 例如:
var names[100000] = "a";
var names[150000] = "b" ... and so on till 5 large indexes.
并且中间的所有值都是未定义的names[100001]//未定义。
现在我的疑问是,因为数组只有 5 个元素,但如果我这样做
names.length //it is 300001
它是一个大数组。我没有迭代这个数组,也没有通过它运行任何循环。我将直接通过数组中定义的索引获取值。
因此,此结构是否会对浏览器产生显着的性能差异,或者只要数组中的值数量较少(无论其索引如何)并且不涉及迭代,就可以使用此结构。
谢谢
最佳答案
数组与普通对象的唯一区别是它的 length
属性及其行为方式(当然还有一些特定于数组的方法)。 length
值只是随着某些操作而增加,例如设置数字属性或 push
ing一个新元素。简而言之就是这样。当您设置属性 100000
时,数组实际上并不包含 100000 个元素。到一个值,所发生的只是您设置一个属性和 length
的值进行相应调整。
所以,不,它不会对性能产生太大影响,除非有人实际上使用 for (let i = 0; i < arr.length; i++)
迭代数组。 .
关于javascript - 数组长度与数组中值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023507/