1. ホーム
  2. javascript

[解決済み] JavaScriptによる乗算表

2022-02-11 14:33:25

質問

私はJavaScriptで2つのネストされたforループを持つ単純な乗算表を持っています。

var result = '\n';
for (var i = 1; i < 11; i++) {
    for (var j = 1; j < 11; j++) {
        result += (i*j) + ' ';
    }
    result += '\n'
}

最初の位置は1ですが、最初の位置が空の状態、例えば"X"で始まるようにして、1 * 1の結果もこのように表示されるようにしたいのです。

解決方法は?

var result = 'x ';
for (var i = 0; i < 11; i++) {

    for (var j = 0; j < 11; j++) {

        if(i == 0 && j > 0){
          result += '[' + j + ']';
        } 
        else if(j == 0 && i>0){
          result += '[' + i + '] ';
        } 
        else if(i>0 && j>0){
        result += (i*j) + ' ';
        }
    }
    result += '\n'
}

console.log(result);

出力する。

x [1][2][3][4][5][6][7][8][9][10]
[1] 1 2 3 4 5 6 7 8 9 10 
[2] 2 4 6 8 10 12 14 16 18 20 
[3] 3 6 9 12 15 18 21 24 27 30 
[4] 4 8 12 16 20 24 28 32 36 40 
[5] 5 10 15 20 25 30 35 40 45 50 
[6] 6 12 18 24 30 36 42 48 54 60 
[7] 7 14 21 28 35 42 49 56 63 70 
[8] 8 16 24 32 40 48 56 64 72 80 
[9] 9 18 27 36 45 54 63 72 81 90 
[10] 10 20 30 40 50 60 70 80 90 100 


より良い印刷のために。

var result = ' x   ';

function buff(val){
  var buff = '';
  var pad = 4 - val;
    while( pad-- > 0 )
            buff += ' ';            
  return buff;
}

for (var i = 0; i < 11; i++) {

    for (var j = 0; j < 11; j++) {

        if(i == 0 && j > 0){
          result += '[' + j + ']' + buff((j+'').length+2);
        } 
        else if(j == 0 && i>0){
          result += '[' + i + ']';
        } 
        else if(i>0 && j>0){
        result += buff((i*j+'').length ) + i*j;
        }
    }
    result += '\n'
}

出力する。

 x   [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
[1]   1   2   3   4   5   6   7   8   9  10
[2]   2   4   6   8  10  12  14  16  18  20
[3]   3   6   9  12  15  18  21  24  27  30
[4]   4   8  12  16  20  24  28  32  36  40
[5]   5  10  15  20  25  30  35  40  45  50
[6]   6  12  18  24  30  36  42  48  54  60
[7]   7  14  21  28  35  42  49  56  63  70
[8]   8  16  24  32  40  48  56  64  72  80
[9]   9  18  27  36  45  54  63  72  81  90
[10]  10  20  30  40  50  60  70  80  90 100