在Javascript中的for循环中推送二维数组中的值

时间:2016-06-26 19:25:14

标签: javascript loops multidimensional-array

我在Javascript中有以下情况 我希望嵌套循环的最终结果如下: testArray [,[0,0,0,0],[1,1,1,1],[2,2,2,2],[3,3,3,3]] 但是推动似乎不起作用,也不会拼接。我不想创建任何中间数组,因为& j 是数据库驱动的,它们的值实际上是未知的。

var testArray = [[3],[4]]; // or new Array(3,4);

for (var row=0; row< 3; row++)
  {
    for (var j=0; j< 4; j++)
       {
         testArray[j,row].push(j); //?
         testArray.splice([j,row],0,j); //?
 }
}

3 个答案:

答案 0 :(得分:0)

我想你想把数组推送到另一个数组。这样就可以了。

var testArray = [ ]; //
for (var row=0; row< 3; row++) { 
    var tempArr = [ ];
    for (var j=0; j< 4; j++){ 
        tempArr.push(row); 
    } 
    testArray.push(tempArr);
}

答案 1 :(得分:0)

正如评论中所指出的,您的代码不会初始化您认为它所做的二维数组。您需要创建一个新数组并将其推送到您需要的每个“行”的顶级数组中。然后可以通过多种方式填充每个子阵列 - 由您决定如何访问它们并“推入”它们。我编写了一个解决方案并为它创建了一个Codepen,以便您可以使用代码:

http://codepen.io/jose8a/pen/KMabNw?editors=0011

var testArray = [];

for (var row=0; row<= 3; row++)
  {
    testArray.push([]);
    for (var j=0; j< 4; j++)
       {
         testArray[j, row].push(row); //?
         //testArray.splice([j,row],0,j); //?
 }
}

console.log(testArray);

答案 2 :(得分:0)

使用ES6 Array.fill函数有一种“新”方法来获取所需的数组:

var testArray = [3,4], result = [];
for (var i = 0; i < testArray[1]; i++) {
    result.push([].fill.call(new Array(4), i));
}

console.log(JSON.stringify(result)); // [[0,0,0,0],[1,1,1,1],[2,2,2,2],[3,3,3,3]]

Array.prototype.fill()