javascript splice() 索引问题

发布于 2024-09-05 22:23:05 字数 513 浏览 2 评论 0原文

我必须向数组添加一些值。

例如代码:

temp[0]=new Array("0","0");
temp[1]=new Array("0","0");
temp[2]=new Array("0","0");
temp[3]=new Array("0","0");
temp[4]=new Array("0","0");

vt=new Array("1","0");
temp.splice(3, 0, vt);
temp.splice(4, 0, vt);

temp[3][1]="R";    

我期望这个输出:

1 - 0,0
2 - 0,0
3 - 0,0
4 - 1,R
5 - 1,0
6 - 0,0
7 - 0,0

但实际输出是:

1 - 0,0
2 - 0,0
3 - 0,0
4 - 1,R
5 - 1,R
6 - 0,0
7 - 0,0

有什么想法吗?我认为这是 splice() 函数的索引问题!

I have to add some value to an array.

Code for example :

temp[0]=new Array("0","0");
temp[1]=new Array("0","0");
temp[2]=new Array("0","0");
temp[3]=new Array("0","0");
temp[4]=new Array("0","0");

vt=new Array("1","0");
temp.splice(3, 0, vt);
temp.splice(4, 0, vt);

temp[3][1]="R";    

I expect this output :

1 - 0,0
2 - 0,0
3 - 0,0
4 - 1,R
5 - 1,0
6 - 0,0
7 - 0,0

But the actual output is:

1 - 0,0
2 - 0,0
3 - 0,0
4 - 1,R
5 - 1,R
6 - 0,0
7 - 0,0

Any idea? I think it's an indexing problem with splice() function!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相思碎 2024-09-12 22:23:05

JavaScript 数组是对象。将对象放入数组时,基本上是将对其的引用放入数组中。您在这两个地方都放置了相同引用。如果更改参考,它将反映在所有其他参考中。您需要在这两个位置插入一个新的对象,以便引用指向不同的对象。

所以而不是

vt=new Array("1","0");
temp.splice(3, 0, vt);
temp.splice(4, 0, vt);

temp.splice(3, 0, new Array("1","0"));
temp.splice(4, 0, new Array("1","0"));

Javascript arrays are objects. When putting an object in an array, you're basically putting a reference to it in the array. You're here putting the same reference in the both places. If you change a reference, it will be reflected in all other references. You need to insert a new and separate object in both places instead so that the references points to a different object.

So instead of

vt=new Array("1","0");
temp.splice(3, 0, vt);
temp.splice(4, 0, vt);

do

temp.splice(3, 0, new Array("1","0"));
temp.splice(4, 0, new Array("1","0"));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文