1. 空配列のときは空配列を返す
  2. 要素が 1 つのときも印が付く
  3. 要素が 2 つのときは 2 つとも印が付く
  4. 要素が 3 つでも順番が保たれる
コース一覧
JavaScript基礎文法:処理を組み立てる
for-of で配列を走査する

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分

for-of で配列を走査する

for...of とインデックス
解説

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

  • for (const item of arr) で、要素そのものを直接受け取れます
  • 番号が要るときは、これまでどおり for を選びます

番号を書くから、番号を間違える

前のレッスンで書いた for を思い出してください。丸カッコの中で i の面倒を 3 つも見ているのに、本体で i を使っているのは titles[i] の 1 か所だけでした。やりたいのは「要素を 1 つずつ取り出す」であって、番号そのものには興味がありません。それでも、初期化と条件と更新を正しく書く責任だけは負わされています。

番号に用が無いなら、番号を書かない構文があります。for-of です。

JavaScript

const works = ["プロフィールサイト", "自己紹介カード", "スキル一覧の表"]; for (const work of works) { console.log(work); } // => プロフィールサイト // => 自己紹介カード // => スキル一覧の表

of の右に配列を、左に「1 周ごとに 1 要素を受け取る変数」を書きます。変数名は自由ですが、works に対して work のように単数形にすると読みやすくなります。受け取る変数は周ごとに新しく作られるので、中身を書き換えないかぎり const で宣言して構いません。むしろ const にしておけば、うっかり書き換えたときにエラーで気付けます。

番号を書かないということは、番号を間違えようが無いということです。- 1 を書き忘れる事故も、<= にして 1 つ多く回す事故も起きません。

番号が要るときは for のまま

判断の基準は 1 つだけです。番号が要るなら for、要らないなら for-of です。

項目forfor-of
受け取るものインデックス要素そのもの
何周目かが分かるか分かる分からない
逆順や 1 つ飛ばし書ける書けない
書き間違えやすさ3 つの式ぶんあるほぼ無い

「3 番目だけ印を付けたい」「うしろから回したい」という要求があるなら for を選びます。それ以外は for-of のほうが短く、安全です。番号が要らないところをわざわざ番号つきで書いていると、読み手に「なぜ番号が要るのだろう」と考えさせてしまいます。

ためる先をループの中で作ると、最後の 1 件しか残らない

for-of でよくやるのが、1 要素ずつ加工して新しい配列にためる処理です。前のレッスンで覚えた push と組み合わせます。

JavaScript

const views = [120, 80, 45]; const doubled = []; for (const view of views) { doubled.push(view * 2); } console.log(doubled); // => [240, 160, 90]

ためる先の doubled は、ループの外で空配列として用意するのが型です。ループの中で const doubled = []; と書くと毎周からっぽに戻るので、最後の 1 件しか残りません。置く場所を間違えないでください。

この形なら、元の views は書き換わりません。元のデータを残したまま別の形を作れるので、あとで「元の値は何だったのか」が分からなくなる事故を防げます。ためる先を const で宣言してよいのも同じ理由です。push は中身を変えるだけで、doubled に別のものを入れ直しているわけではありません。

よくある間違い

  • of を in と書く — for-in が返すのは要素ではなくキー、つまり "0" "1" という文字列です

JavaScript

for (const x of works) { console.log(x); } // 作品名が出る for (const x in works) { console.log(x); } // "0" "1" "2" が出る
  • 番号が必要なのに for-of を選ぶ — 何周目かを知る手段が無いので、自分でカウンタを足すことになります。そこまでするなら、最初から for のほうが素直です

要件

  1. 関数名は listWorkTitles、引数は文字列の配列 works 1 つ、戻り値は文字列の配列
  2. くり返しには for-of 文を使うこと (インデックスを使う for ではなく)
  3. 結果は新しい配列にためて返すこと (works そのものを書き換えない)

入出力例

listWorkTitles([]) → [] listWorkTitles(["プロフィールサイト"]) → ["- プロフィールサイト"] listWorkTitles(["プロフィールサイト","自己紹介カード"]) → ["- プロフィールサイト","- 自己紹介カード"] listWorkTitles(["プロフィールサイト","自己紹介カード","スキル一覧の表"]) → ["- プロフィールサイト","- 自己紹介カード","- スキル一覧の表"]

ヒント

ためる先の空配列をループの前に用意しておきます。中で宣言すると毎周からっぽに戻ります

`for (const work of works)` で 1 件ずつ受け取り、`result.push("- " + work);` で足していきます

ハイフンのうしろに半角スペースが 1 つ入ります。スペースの有無でテストが失敗します

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

関連レッスン

  • while で条件を満たす間くり返す

    回数ではなく条件でくり返しを制御する構文が `while` です。終わりが事前に決まらない処理を書けるようになります。

  • break と continue でループを制御する

    ループを途中で抜ける `break` と、今の周だけ飛ばす `continue` を学びます。条件に合わないデータを除きながら回せるようになります。

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

    第5章で学んだ配列とループを全部使って、作品名の配列から番号付きの一覧文字列を作る関数を書きます。

  • 第2章まとめクイズ

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

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

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

  • 配列サイズ固定の同型データの集まり
  • 変数データに名前をつけて参照する仕組み
  • 判断YES/NO 分岐を表す菱形
  • インデックスDB 検索を速くする索引
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • 処理計算や代入を表す長方形
  • カウンタ数を保持して増減する典型 UI
  • 関数処理に名前を付けて再利用できる単位
main.js
学習モード
エディタを読み込んでいます

メモ

for-of で配列を走査する

⌘S で保存