javascript - push() 一个二维数组

标签 javascript arrays for-loop multidimensional-array push

我正在尝试推送到二维数组而不弄乱它,目前我的数组是:

var myArray = [
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1]
]

我正在尝试的代码是:

var r = 3; //start from rows 3
var c = 5; //start from col 5

var rows = 8;
var cols = 7;

for (var i = r; i < rows; i++)
{
    for (var j = c; j < cols; j++)
    {
        myArray[i][j].push(0);
    }
}

这应该会产生以下结果:

var myArray = [
[1,1,1,1,1,0,0],
[1,1,1,1,1,0,0],
[1,1,1,1,1,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
]

但它没有,也不确定这是否是正确的方法。

所以问题是我该如何实现这一目标?

最佳答案

您的代码中有一些错误:

  1. 使用 myArray[i].push( 0 ); 添加新列。您的代码 (myArray[i][j].push(0);) 将在 3 维数组中工作,因为它尝试在位置 [i] 处向数组添加另一个元素[j].
  2. 您只能展开(col-d)所有行中的许多列,即使是那些尚未初始化的列,因此到目前为止还没有条目。

一个正确的版本(虽然有点冗长)如下:

var r = 3; //start from rows 3

var rows = 8;
var cols = 7;

// expand to have the correct amount or rows
for( var i=r; i<rows; i++ ) {
  myArray.push( [] );
}

// expand all rows to have the correct amount of cols
for (var i = 0; i < rows; i++)
{
    for (var j =  myArray[i].length; j < cols; j++)
    {
        myArray[i].push(0);
    }
}

关于javascript - push() 一个二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11345954/

相关文章:

javascript - 如何防止最终用户看到通过浏览器控制台进行的网络调用

javascript - history.back 在使用 Cordova 的 iOS 上不起作用

javascript - 使用 javascript 或 Lodash 将数组值添加到一个 json 对象中

ios - 如何在 Objective c 中将整数数组转换为 NSString?

PHP for 不循环所有值

javascript - 在 iframe 中打印 PDF 时出现 IE9 "Invalid calling object"

java - 获取java数组中n个最大值的索引

java - 如何在java中重复字符串 "n"次?

java - 使用循环从字符串中删除特定字符串

javascript - 如何重置 "clear search"上的下拉值