首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Array.splice()可以通过在数组的最后一个元素之外的索引处添加一个元素来创建稀疏数组吗?

Array.splice()可以通过在数组的最后一个元素之外的索引处添加一个元素来创建稀疏数组吗?
EN

Stack Overflow用户
提问于 2015-12-30 17:34:07
回答 3查看 669关注 0票数 0

Array.splice()可以通过在数组的最后一个元素之外的索引处添加一个元素来创建稀疏数组吗?“我需要这样做,因为在某些情况下,我只是想推到数组上,但在其他情况下,我需要将数组连接到数组中。但是试图使用剪接使数组稀疏不起作用,尽管在特定情况下,我能够实现一些代码来测试是否使用拼接,或者只是在数组长度之外的索引上分配数组元素。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-30 17:41:49

不是的。ECMAScript规范不允许相对起始位置大于数组长度。从Array.prototype.splice,步骤7:

  1. ...let actualStart be min(relativeStart,len)。

变量actualStart实际上用于splice算法。它由relativeStart (函数的第一个参数)和len (数组的length )的最小值产生。如果len小于relativeStart,那么splice操作将使用len代替实际提供的参数。

实际上,这意味着只能将值附加到数组的末尾。您不能使用splice定位一个新元素通过length索引。

票数 5
EN

Stack Overflow用户

发布于 2015-12-30 17:47:14

应该注意的是,数组的长度不一定是数组中最后一项的索引加1,它可以更大。

然后,您不能使用splice插入数组长度以外的元素,但是如果确保长度足够大,则可以在最后一个索引加1之后插入。

代码语言:javascript
运行
复制
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
票数 4
EN

Stack Overflow用户

发布于 2015-12-30 17:34:07

Array.splice()不能用于创建稀疏数组。相反,如果传递给Array.splice()的索引参数超出了数组的长度,则元素似乎只是被附加到数组中,就像使用了Array.push()一样。

代码语言:javascript
运行
复制
/* 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34534295

复制
相关文章

相似问题

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