1. 空配列のときは 作品はまだありません を返す
  2. 要素が 1 つのときは改行が入らない
  3. 要素が 2 つのときは 1 か所だけ改行が入る
  4. 要素が 3 つのときは番号が 3 まで並ぶ
  5. 要素が 5 つでも番号がずれない
コース一覧
JavaScript基礎文法:処理を組み立てる
つくる 作品リストを一覧にする

JavaScript基礎文法:処理を組み立てる

if・switch による条件分岐、配列とループ、関数とコールバック、オブジェクトを順に組み立てる全 33 レッスン(525 分)の基礎文法コースです。FizzBuzz、作品リスト、関数への整理、作品データの構造化を通して、入力から結果を返す処理を自分で分解して書きます。DOM 操作は次のコースで扱います。

1
条件分岐
01. if 文の基本15分
02. if / else if / else で段階判定15分
03. switch 文で値を一覧から選ぶ15分
04. 条件を組み合わせる20分
05. FizzBuzz で複数条件を組み立てる20分
06. つくる 時間帯で挨拶を変える20分
07. 第1章まとめクイズ10分
2
配列とループ
01. 配列のきほん15分
02. 要素を足す・取り除く15分
03. for ループで合計を求める15分
04. for-of で配列を走査する15分
05. while で条件を満たす間くり返す15分
06. break と continue でループを制御する15分
07. つくる 作品リストを一覧にする20分
08. 第2章まとめクイズ10分
3
関数
01. 関数宣言15分
02. アロー関数15分
03. デフォルト引数15分
04. 早期 return でネストを浅くする15分
05. 変数のスコープ15分
06. コールバック関数15分
07. forEach で配列をまわす15分
08. つくる 処理を関数に整理する20分
09. 第3章まとめクイズ10分
4
オブジェクト
01. オブジェクトのきほん18分
02. オブジェクトで複数の値を返す16分
03. const と参照18分
04. ?. で安全に取り出す16分
05. 分割代入18分
06. スプレッド構文18分
07. find と includes で探す16分
08. つくる 作品データを構造化する25分
09. 第4章まとめクイズ10分

つくる 作品リストを一覧にする

解説

このレッスンで分かること

  • 配列とループを組み合わせて、一覧の文字列を組み立てられます
  • 区切り文字は要素の「うしろ」ではなく「あいだ」に置きます

作品が 1 件増えるたびに、表示を書き直している

第 5 章では、配列と for と while を手に入れました。この道具がそろったことで、件数が変わっても書き直さなくていいコードが書けます。今回はその総仕上げとして、作品名の配列から、そのまま画面に出せる番号付きの一覧を組み立てる buildWorkList を書きます。作りたいのは次の形です。

プレーンテキスト

1. プロフィールサイト 2. 自己紹介カード 3. スキル一覧の表

配列が持っているのは 0 から始まるインデックスだけなので、表示用の番号は自分で作ります。差はいつも 1 です。

インデックス表示したい番号
01
12
23

番号が要るので、ここは for-of ではなく通常の for を選びます。足した結果を文字列とつなぐときは、丸カッコで囲んでおくと安全です。

JavaScript

console.log(1 + 1 + " 番目"); // => 2 番目 console.log("番号 " + 1 + 1); // => 番号 11

+ は左から順に処理されるので、いったん文字列が現れたあとの + はすべて連結になります。数として足したいところは、先に丸カッコでまとめてしまいます。

区切りは「うしろ」ではなく「あいだ」に置く

行と行をつなぐ改行は \n と書きます。バックスラッシュと n の 2 文字で 1 つの改行です。

つまずくのは改行を入れる位置です。素直に「1 行ぶん作るたびに、うしろへ \n を足す」と書くと、最後の行のうしろにも改行が残ります。目で見ても気付けないのに、文字列を比べるテストは容赦なく落ちます。

別の題材で形だけ見ておきます。タグを「、」でつなぐ例です。

JavaScript

const tags = ["HTML", "CSS", "JavaScript"]; let line = ""; for (let i = 0; i < tags.length; i++) { if (i > 0) { line += "、"; // 2 個目以降だけ、前に区切りを足す } line += tags[i]; } console.log(line); // => HTML、CSS、JavaScript

i > 0 がそのまま「2 個目以降」を意味します。1 個目のときだけ区切りを足さない、という考え方です。カンマ区切りでも改行でも、区切り文字を扱うときはいつもこの形になります。

何も無いときに、何を返すか

作品がまだ 1 件も無い場合、何も考えずに書くと空文字列が返ります。画面には何も出ず、まるで壊れているように見えます。そこで空配列のときは専用のメッセージを返します。判定は関数の先頭で済ませてしまうのがきれいです。

JavaScript

function joinTags(tags) { if (tags.length === 0) { return "タグはまだありません"; } // ここから先は、要素が 1 つ以上あることが保証されている }

先に特殊なケースを片付けると、そのあとは「要素がある場合」だけを考えればよくなります。空のとき、ひとつだけのとき。この 2 つはプログラムが壊れやすい境界で、テストでも必ず確認されます。要素が 1 つのときは i > 0 が一度も真にならないので、区切りが入らないことを手で追って確かめてください。

よくある間違い

  • 番号がずれる — インデックスをそのまま使うと 0. から始まる一覧になります。表示用は 1 を足した値です
  • ためる変数をループの中で宣言する — let result = ""; を本体に書くと毎周からっぽに戻り、最後の 1 行しか残りません。宣言はループの前です

要件

  1. 関数名は buildWorkList、引数は文字列の配列 titles 1 つ、戻り値は文字列
  2. 各行は 番号 + ". " + 作品名 の形にすること。番号は 1 から始まる
  3. 行と行のあいだだけを \n でつなぐこと (末尾に余分な改行を付けない)
  4. 空配列のときは "作品はまだありません" を返すこと

入出力例

buildWorkList([]) → "作品はまだありません" buildWorkList(["プロフィールサイト"]) → "1. プロフィールサイト" buildWorkList(["プロフィールサイト","自己紹介カード"]) → "1. プロフィールサイト 2. 自己紹介カード" buildWorkList(["プロフィールサイト","自己紹介カード","スキル一覧の表"]) → "1. プロフィールサイト 2. 自己紹介カード 3. スキル一覧の表" buildWorkList(["プロフィールサイト","自己紹介カード","スキル一覧の表","ブログ","ポートフォリオ"]) → "1. プロフィールサイト 2. 自己紹介カード 3. スキル一覧の表 4. ブログ 5. ポートフォリオ"

ヒント

空配列の判定を関数の先頭で済ませてしまうと、そのあとは要素があることを前提に書けます

番号が必要なので `for-of` ではなくインデックスを使う `for` を選び、`(i + 1)` で表示用の番号を作ります

`if (i > 0) { result += "\n"; }` を行を足す前に書くと、末尾に余分な改行が残りません

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

関連レッスン

  • 第2章まとめクイズ

    第5章で学んだ配列の作りかたと取り出しかた、push と pop、for と for-of、while、break と continue を 5 問で確認します。

  • 関数宣言

    function キーワードで処理に名前を付け、引数を受け取って戻り値を返す仕組みを学びます。プロフィールサイトの挨拶づくりを関数にまとめます。

  • オブジェクトのきほん

    関連する値をひとつの箱にまとめる入れ物がオブジェクトです。作成とプロパティの読み書きを身に付けます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 配列サイズ固定の同型データの集まり
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • インデックスDB 検索を速くする索引
  • 処理計算や代入を表す長方形
  • テストバグを見つける工程
  • 関数処理に名前を付けて再利用できる単位
  • 変数データに名前をつけて参照する仕組み
  • 引数位置引数=順番で渡す。
main.js
学習モード
エディタを読み込んでいます

メモ

つくる 作品リストを一覧にする

⌘S で保存