我在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); //?
}
}
答案 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]]