为什么splice不能填充javascript数组上的漏洞
Why does splice not fill the holes on a javascript array?
假设您运行以下代码:
var a = [];
a[4] = true;
那么你的阵列看起来像[undefined, undefined, undefined, undefined, true]
但是如果你运行这个代码:
var a = [];
a.splice(4, 0, true);
你会得到[true]
而不是[undefined, undefined, undefined, undefined, true]
当使用拼接时,如果索引超过数组的当前长度,它只会在最后一个元素处停止。
为什么这是拼接的预期行为?
根据ECMA文档,"start"参数不能大于数组的长度,也不能设置为数组的长度。
5-设relativeStart为ToInteger(start)。
6-如果relativeStart为负数,则设actualStart为max((len+relativeStart),0);否则,让actualStart为min(relativeStart,len)。
http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.12
至于具体原因:我不确定,也许他们认为如果该方法向数组中添加项会违反直觉。
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 在Javascript中转换对象数组
- 为什么splice不能填充javascript数组上的漏洞