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

时间:2017-12-27 20:39:01

标签: javascript multidimensional-array

经过一些试验和错误后,我现在能够显示我想要的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++;
}
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分: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++;
}

答案 1 :(得分:0)

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

插入条件

if (i) {

检查变量i是否为truthy ness,并在这种情况下将值不等于零作为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>'));

答案 2 :(得分:0)

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

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

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

见下面的代码:

&#13;
&#13;
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++;
}
&#13;
&#13;
&#13;

答案 3 :(得分: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(''));
}