经过一些试验和错误后,我现在可以按需要显示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++;
}
跳过内部循环并使用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(''));
}
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++;
}
我想你想重新思考你的逻辑。
您始终要打印当前值。所以我删除了那个逻辑。您希望在当前数组结束时打印新行。
如果你正确地构造它,你不需要任何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++;
}
您可以使用检查在外部循环中移动换行符,并仅获取内部循环内的值。
插入的条件
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#map
和Array#join
较短的方法。
var x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
document.write(x.map(a => a.join('')).join('<br>'));