首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在稀疏数组上迭代

在稀疏数组上迭代
EN

Stack Overflow用户
提问于 2013-12-02 11:09:11
回答 1查看 1.2K关注 0票数 1

This answer说,在稀疏数组上迭代的最好方法是使用for X in Array

但是,当我尝试这样做时,我跳了一下,因为X的类型是一个字符串,而不是我所期望的整数索引。(一切都很好,直到我把它加到另一个整数中.)

代码语言:javascript
复制
var arr = [];
arr[10000] = "Hello";

var shifted = []

for (var x in arr)
    shifted[10+x] = arr[x];

“预期”:

代码语言:javascript
复制
  shifted[10010] = "Hello

实际

代码语言:javascript
复制
  shifted["1010000"] = "Hello" 

是否有更好的方法来使用索引来迭代稀疏数组,还是应该只在需要的地方使用Number(X)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-02 11:22:50

这就是V8 (和其他JavaScript引擎)处理数组的方式:

V8使用两种不同的方法来处理数组:

  • 快速元素: 为键集非常紧凑的数组设计的。它们有一个线性存储缓冲区,可以非常有效地访问。

  • 字典元素: 为稀疏数组设计的,这些数组中没有所有元素。它实际上是一个哈希表,访问成本比“快速元素”要高

资料来源: http://thibaultlaurens.github.io/javascript/2013/04/29/how-the-v8-engine-works/

当您使用稀疏数组时,键将转换为字符串,然后进行散列。如果您想要数字键:不要使用稀疏数组或手动将键转换为数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20326823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档