在JavaScript中显示二维数组的最有效方法是什么?

问题描述 投票:-4回答:4

经过一些试验和错误后,我现在可以按需要显示2d数组,除了我不希望在第一个数组项之前进行换行。

我希望我的输出看起来像这样:

123
456
789

但它看起来像这样:

(blank line)
123
456
789

我的JavaScript代码:

x = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

i = 0;
while (i < x.length) {
  j = 0;
  while (j < x.length) {
    if (j % 3 === 0) {
      document.write('<br/>' + x[i][j]);
    } else {
      document.write(x[i][j]);
    }
    j++;
  }
  i++;
}
javascript multidimensional-array
4个回答
0
投票

跳过内部循环并使用join()将子数组元素合并为字符串

<br>不为零时添加i

var x = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

var i = -1;
while (++i < x.length) {
  document.write( (i>0 ? '<br/>' : '') + x[i].join(''));
}

0
投票

x = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

i = 0;
while (i < x.length) {
  j = 0;
  while (j < x.length) {
    if (j % 3 === 0) {
      if (i != 0) {
          document.write('<br/>');
      }
      document.write(x[i][j]);
    } else {
      document.write(x[i][j]);
    }
    j++;
  }
  i++;
}

0
投票

我想你想重新思考你的逻辑。

您始终要打印当前值。所以我删除了那个逻辑。您希望在当前数组结束时打印新行。

如果你正确地构造它,你不需要任何if语句。

见下面的代码:

x = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

i = 0;
while (i < x.length) {
  j = 0;
  while (j < x[i].length) {
    document.write(x[i][j]);
    j++;
  }
  document.write('<br/>');
  i++;
}

0
投票

您可以使用检查在外部循环中移动换行符,并仅获取内部循环内的值。

插入的条件

if (i) {

检查变量i for truthyness并在这种情况下将值不等于零作为true值并跳过第一行的换行符。

顺便说一下,提前声明变量是个好主意。

var x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
    i = 0,
    j;

while (i < x.length) {
    j = 0;
    if (i) {
        document.write('<br/>');
    }
    while (j < x[i].length) {    // take the inner array for length
        document.write(x[i][j]);
        j++;
    }
    i++;
}

Array#mapArray#join较短的方法。

var x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

document.write(x.map(a => a.join('')).join('<br>'));
© www.soinside.com 2019 - 2024. All rights reserved.