初投稿です。最近、JavaScriptなどの学習を始めました。優しくしてください。
先日JavaScriptを使ったうるう年のプログラムを学習したところですが、最近覚えたfor文と組み合わせて、
西暦と一緒にうるう年かどうかをhtml上で西暦○○年:平年ですorうるう年です
とブラウザに出力するプログラムを書いてみようと考えました。
0年から2020年までずらーっと並べます。
コード内の下記の配列は連番の数字の配列を作成(es2015 ver)
を参考にさせていただきました。
0から2020までの数値を変数に入れるつもりでした。
const arr = [...Array((2020) + 1).keys()]
#コード
- htmlの
<script>
タグ内に記述し、
document.write();
で出力しています。 -
uruu(year)
がうるう年を判定する関数です。引数に応じてうるう年か平年かを判定してresult
に渡します。
<!DOCTYPE html>
<html lang="ja" dir="ltr">
<head>
<meta charset="UTF-8">
<title>うるう年出力</title>
</head>
<body>
<script>
function uruu(year) {
if (year % 4 == 0) {
if (year % 100 != 0 || year % 400 == 0) {
result = 'うるう年です';
}
} else {
result = '平年です';
}
}
const arr = [...Array((2020) + 1).keys()]
let result = "";
for (let i = 0; i < arr.length; i++) {
uruu(arr[i])
document.write('西暦' + arr[i] + '年:' + result);
document.write('<br>');
}
</script>
</body>
</html>
#結果
西暦0年から2020年までをブラウザに出力出来ました。(0年は本来無いらしいですが…)
長いので最初と最後を。
これだけです。
#所感
-
全体的にもっと短くきれいに書けるはず。あまりにも無知。
-
下記の箇所はfor文をどうにかして、配列の箇所を
...Array(2020)
と簡潔に出来そうな気がするのですが、西暦2020の所が西暦undefinedとなってしまうので現状の記述にしています。
const arr = [...Array((2020) + 1).keys()]
for (let i = 0; i < arr.length; i++) {
#最後に
今後はもっと難しいのを書けるようになりたい。