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

时间:2017-07-11 07:21:24

标签: javascript jquery arrays multidimensional-array

我有一个名为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方法?或者它在这种情况下根本不起作用?非常感谢任何帮助!

3 个答案:

答案 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);