【问题标题】:How to append new array to beginning of multi-dimensional array [duplicate]如何将新数组附加到多维数组的开头[重复]
【发布时间】:2017-12-15 03:00:25
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery arrays multidimensional-array


    【解决方案1】:

    【讨论】:

    • 太棒了!非常感谢!
    • 虽然这是正确的做法,但我想指出,OP 尝试的方法也应该有效,但他在分配值时出错。所以这基本上是一个替代(更好)的解决方案,而不是他确切问题的答案;)下次他使用splice()时,他会犯同样的错误。
    【解决方案2】:

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

    splice 函数还可以从数组中删除项目,splice() 的返回值就是那些被删除的项目。

    所以vArr = vArr.splice(0, 0, newv); 应该只是vArr.splice(0, 0, newv);

    【讨论】:

      【解决方案3】:

      您可以使用unshift() 将新数组推送到原始数组的开头,并使用pop() 从数组中删除最后一个元素:

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

      【讨论】:

        猜你喜欢
        • 2015-04-26
        • 2016-03-18
        • 2020-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-04
        • 1970-01-01
        相关资源
        最近更新 更多