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

7

我有一个名为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();

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


重新审查: "2022年6月5日 @ 22:28 UTC"。我认为重复的问题是以下链接:https://dev59.com/4nI-5IYBdhLWcg3w99kH。该问题没有使用“队列”一词,但这正是用户所要求的。示例使用多维数组进行演示是无关紧要的。正确的解决方案逻辑将与示例使用一维或二维数组无关。正确的解决方案是演示如何在JavaScript中创建队列,这在我分享的链接中已经展示了。 - JΛYDΞV
3个回答

1

太棒了!非常感谢! - user7168530
虽然这是正确的做法,但我想指出OP尝试的方法也应该可以工作,但他在赋值时犯了一个错误。因此,这基本上是一种替代(更好)的解决方案,而不是对他确切问题的答案 ;) 下次他使用splice()时会犯同样的错误。 - vi5ion

0

问题出在将vArr.splice(0, 0, newv)的结果赋值回vArr上。

splice()函数也可以从数组中删除元素,splice()的返回值是被删除的元素。

所以vArr = vArr.splice(0, 0, newv);应该改为vArr.splice(0, 0, newv);


0
你可以使用unshift()将新数组推入原始数组的开头,并使用pop()从数组中移除最后一个元素。

var vArr = [[1, 1], [2, 2], [3, 3]];
var arrToPush = [4, 4];
vArr.unshift(arrToPush);
vArr.pop();
console.log(vArr);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接