数组 - 长度不清楚
Arrays - Length.unclear
所以我有这段代码:
var box = [];
box[0] = "meow";
box[3] = {"babyBox" : true};
问题 : 为什么是框["长度"]; 将显示在控制台 4 而不是 2 中?我用盒子[10]换了盒子[3],我得到了11。对不起,如果这是一个菜鸟问题..但从我的角度来看,名为 Box 的数组只有 2 个元素。谢谢!
来自 Mozilla Developer Network 文档:
length 属性表示一个无符号的 32 位整数,即 在数值上始终大于数组中的最高索引。
因为您正在设置box[3]
,这告诉它数组有 4 (0,1,2,3) 个部分,即使您尚未为它们分配任何内容
每次将元素添加到数组中时,都会重新计算长度。
通过在超出数组长度的索引处分配项,会导致数组调整大小。未分配的索引成为数组中的漏洞。
基本上,现在数组看起来像:
0 1 2 3
-------------------- -------------------- -------------------- --------------------
| "meow" | | | | | |{"babyBox" : true}|
-------------------- -------------------- -------------------- --------------------
相关文章:
- Emberjs#每个循环不处理数组数据
- Javascript拼接对象而不是数组
- Angularjs:如何删除动态表行,但不从数组中删除
- 局部数组变量不是数组
- Javascript:push 不是数组的函数
- 解析查询查找方法返回对象而不是数组
- 为什么删除运算符不更改数组的长度
- 在数据表中使用 JSON 对象而不是数组
- 谷歌图表错误'不是数组'关于Ajax更新
- 为什么此代码返回未定义的4次而不是数组值
- 如何在不创建数组的情况下使用NgFor来生成矩阵UI模式
- 如何在Angular中设置异步HTTP服务的回调,以便在不定义数组的情况下在控制器中填充数组
- Ng重复不随数组变化而更新
- 数组长度不等于数组对象
- JSON.stringify不转换数组
- AngularJS 1.2.0 $http不保留数组元素
- 如何将变量设置为给定时刻数组的值,而不是数组的任何值
- 在javascript中,如何将相同的对象两次推送到一个数组中,并进行一些修改而不覆盖数组
- 函数看不到数组中的更改
- 使用文本文件而不是数组