可以使用Array.splice()通过在数组最后一个元素之外的索引处添加元素来创建稀疏数组吗
Can Array.splice() be used to create a sparse array by adding an element at an index beyond the last element of the array?
Array.splice()
是否可以通过在数组最后一个元素之外的索引处添加元素来创建稀疏数组?"我需要这个,因为在某些情况下我只想推到数组上,但在其他情况下我需要拼接到数组中。但尝试使用拼接来使数组稀疏是行不通的,尽管在我的特定情况下,我能够实现一些代码来测试是使用拼接,还是只在超出数组长度的索引处分配一个数组元素。
否。ECMAScript规范不允许相对起始位置大于数组长度。从Array.prototype.splice
上的ES2015开始,步骤7:
- 。。。设actualStart为min(relativeStart,len)
变量actualStart实际用于splice
算法。它由relativeStart(函数的第一个参数)和len的最小值(数组的length
)产生。如果len小于relativeStart,则splice
操作将使用len而不是提供的实际参数。
实际上,这意味着您只能将值附加到数组的末尾。不能使用splice
将新元素放置在length
索引之后。
需要注意的是,数组的长度不一定是数组中最后一项的索引加1。它可以更大。
然后,不能使用splice
插入超出数组长度的元素,但如果确保长度足够大,则可以插入超出最后一个索引加1的元素。
var arrSplice = ['what', 'ever'];
arrSplice.length = 10; // Increase the capacity
arrSplice.splice(10, 0, 'foobar'); // Now you can insert items sparsely
console.log(arrSplice.length); // 10
console.log(arrSplice[arrSplice.length - 1]); // foobar
Array.splice()
不能用于创建稀疏数组。相反,如果传递给Array.splice()
的索引参数超出了数组的长度,则该元素似乎只是被附加到数组中,就好像使用了Array.push()
一样。
/* How you might normally create a sparse array */
var arrNoSplice = ['foo', 'bar'];
arrNoSplice[10] = 'baz';
console.log(arrNoSplice.length); // 11
/* Demonstrates that you cannot use splice to create a sparse array */
var arrSplice = ['what', 'ever'];
arrSplice.splice(10, 0, 'foobar');
console.log(arrSplice.length); // 3
console.log(arrSplice[arrSplice.length - 1]); // foobar
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- javascript数组元素是否知道其封闭数组
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 如何在javascript中使用click函数选择数组元素
- 如何在JavaScript中剥离数组元素中的非整数
- 消隐数组元素是否生成自己的属性
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 在Codrops的内容中添加数组元素展开缩略图网格预览
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 如何访问数组中的数组元素(JavaScript)
- 生成ACF标记位置的数组(元素列表后缺少])
- validate.js验证数组元素
- JavaScript Unshift EACH 数组元素
- 如何在加号运算符之后选择数组元素的一部分
- 访问标记图标的图像数组元素
- JavaScript 合并相同的数组元素
- 删除仅空格数组元素
- JavaScript闭包和返回数组元素