如何将新数组附加到多维数组的开头

6 浏览
0 Comments

如何将新数组附加到多维数组的开头

这个问题已经有答案了
如何在JavaScript中在数组开头添加新元素?

社区在9个月前曾审核过是否重新开放此问题,但最终仍然关闭:

原始关闭理由未得到解决

我有一个名为 vArr 的二维数组,它看起来像这样...

vArr = [[1, 1], [2, 2], [3, 3]];

我的目标是,当需要将新的数组附加到 vArr 开头时,将所有数组元素都移动到新位置,然后删除 vArr 的最后一个元素以保留其大小(在本例中为 3)。例如,如果我想将新元素 [4, 4] 附加到 vArr 中,则新的 vArr 应该如下所示...

vArr = [[4, 4], [1, 1], [2, 2]];

[4, 4] 已附加到开头,所有其他元素已向前移动,并删除了 vArr 大小为 3 的任何剩余元素(即 [3, 3])。以下是我的代码...

var vArr = [[1, 1], [2, 3], [3, 3]];
var newv = [4, 4]; // New array to append
// My attempt at splicing newv to position 0 in vArr array without removing anything
vArr = vArr.splice(0, 0, newv);
// newv logs to the console successfully, however vArr is undefined for some reason
console.log(newv);
console.log(vArr);
// Get rid of final element (doesn't work because vArr is no longer defined from above)
vArr = vArr.pop();

我知道 splice 行中的语法可能有问题,但是我一直无法在网上找到有关这里出了什么问题的信息。如果您要将数组插入 2D 数组,则拼接方法是否必须更改?或者在这种情况下根本不起作用吗? 非常感谢您的帮助!

admin 更改状态以发布 2023年5月21日
0
0 Comments

问题在于将 vArr.splice(0, 0, newv) 的结果分配回 vArr

splice 函数也可以从数组中删除项目,并且 splice() 的返回值是那些已删除的项目。

因此,vArr = vArr.splice(0, 0, newv); 应该简单地变成 vArr.splice(0, 0, newv)

0
0 Comments
0