推()的二维阵列(push() a two-dimensional array)

2019-06-26 02:08发布

我试图推到一个二维数组没有它搞乱了,目前我的数组是:

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],
]

但事实并非如此,不知道这是否是做或不正确的方法。

所以,问题是我会怎样做到这一点?

Answer 1:

你在你的代码中的一些错误:

  1. 使用myArray[i].push( 0 ); 添加一个新列。 代码( myArray[i][j].push(0); )将在一个3维阵列的工作,因为它试图另一个元件在位置添加到一个数组[i][j]
  2. 你只扩大(COL-d)中的所有行-many列,即使在那些,其中尚未初始化,因此没有条目为止。

一个正确的,但那种详细的版本,会是以下几点:

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);
    }
}


Answer 2:

您可以通过所有行必须循环,并添加缺少的行和列。 对于已经存在的行,则循环从C到的cols,为新的行,第一推空数组到外部阵列,然后从0到COLS循环:

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

var rows = 8;
var cols = 7;

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


Answer 3:

遍历两个维度意味着你将需要检查在两个维度。

假设你开始:

var myArray = [
    [1,1,1,1,1],
    [1,1,1,1,1],
    [1,1,1,1,1]
]; //don't forget your semi-colons

要扩展这个二维数组变成:

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],
];

这意味着你需要理解上的差异是什么。

开始与外部阵列:

var myArray = [
    [...],
    [...],
    [...]
];

如果你想使这阵时间越长,你需要检查它的正确长度,并添加更多的内部阵列来弥补差额:

var i,
    rows,
    myArray;
rows = 8;
myArray = [...]; //see first example above
for (i = 0; i < rows; i += 1) {
    //check if the index exists in the outer array
    if (!(i in myArray)) {
        //if it doesn't exist, we need another array to fill
        myArray.push([]);
    }
}

下一步需要循环访问每个阵列中的每个列,我们将建立在原来的代码:

var i,
    j,
    row,
    rows,
    cols,
    myArray;
rows = 8;
cols = 7; //adding columns in this time
myArray = [...]; //see first example above
for (i = 0; i < rows; i += 1) {
    //check if the index exists in the outer array (row)
    if (!(i in myArray)) {
        //if it doesn't exist, we need another array to fill
        myArray[i] = [];
    }
    row = myArray[i];
    for (j = 0; j < cols; j += 1) {
        //check if the index exists in the inner array (column)
        if (!(i in row)) {
            //if it doesn't exist, we need to fill it with `0`
            row[j] = 0;
        }
    }
}


Answer 4:

你的情况,你可以做到这一点,而无需使用push可言:

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

var newRows = 8;
var newCols = 7;

var item;

for (var i = 0; i < newRows; i++) {
    item = myArray[i] || (myArray[i] = []);

    for (var k = item.length; k < newCols; k++)
        item[k] = 0;    
}


Answer 5:

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

var rows = 8;

var cols = 7;


for (var i = 0; i < rows; i++)

{

 for (var j = 0; j < cols; j++)

 {
    if(j <= c && i <= r) {
      myArray[i][j] = 1;
    } else {
      myArray[i][j] = 0;
    }
}

}


Answer 6:

您呼叫的推送()的数组元素(INT),其中按()应在阵列上调用,也处理上/填充阵列这种方式是没有意义的,你可以像下面这样做

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


for (var i = r; i < rows - 1; i++)
{

  for (var j = 0; j < cols; j++)
  {
      col.push(0);
  }
}

你也可以使用,如果条件相结合的两个循环,如果行<R,否则,如果行> = R



Answer 7:

创建时数组,并把第一里面,在这种情况下,我从JSON响应获取数据

$.getJSON('/Tool/GetAllActiviesStatus/',
   var dataFC = new Array();
   function (data) {
      for (var i = 0; i < data.Result.length; i++) {
          var serie = new Array(data.Result[i].FUNCAO, data.Result[i].QT, true, true);
          dataFC.push(serie);
       });


文章来源: push() a two-dimensional array