我有一个名为vArr的二维数组。它看起来像是......
vArr = [[1, 1], [2, 2], [3, 3]];
我想要做的是,当需要将新数组附加到vArr的开头时移动所有数组元素,然后删除vArr的最后一个元素以保留其大小(在本例中为3)。因此,例如,如果我想要附加到vArr的新元素[4,4],则新的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方法?或者它在这种情况下根本不起作用?非常感谢任何帮助!
答案 0 :(得分:0)
您可以使用解决方案https://jsfiddle.net/fkz9ubug/
var vArr = [[1, 1], [2, 3], [3, 3]];
var newv = [4, 4];
vArr.unshift(newv)
console.log(vArr);

文档
答案 1 :(得分:0)
问题在于将vArr.splice(0, 0, newv)
的结果分配回vArr
。
splice函数也可以从数组中删除项目,splice()
的返回值就是那些被删除的项目。
所以vArr = vArr.splice(0, 0, newv);
应该只是vArr.splice(0, 0, newv);
。
答案 2 :(得分:0)
您可以使用unshift()
在原始数组的开头推送新数组,并使用pop()
从数组中删除最后一个元素:
var vArr = [[1, 1], [2, 2], [3, 3]];
var arrToPush = [4, 4];
vArr.unshift(arrToPush);
vArr.pop();
console.log(vArr);