javascript - 数组长度与数组中值的数量

标签 javascript arrays

最近我不得不制作一个具有大索引值的数组(由于插件限制)。 例如:

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/

相关文章:

ios - 如何根据 Swift 中的条件过滤具有重复项目名称的对象数组

javascript - 拦截javascript中的所有函数调用

javascript - 在 Openlayer 中添加谷歌地图图层。有什么要求?

javascript - 如何在 JavaScript 中逐行循环换行符分隔的 json?

java - 如何通过套接字读取/写入二维字符数组?

android - 解析 JSONArray Android 中的 JSONObject 时出错

javascript - 正则表达式可选捕获未按预期工作

单击任何超链接时打开特定 URL 的 JavaScript

javascript - 这个数字是2的立方之和吗?

javascript - 如何比较两个数组有多少相同的元素?