1. 空配列のときは 0 を返す
  2. 要素が 1 つのときはその値を返す
  3. 3 件の閲覧数の合計を返す
  4. 全部 0 なら合計も 0
  5. 4 件でも正しく合計する
コース一覧
JavaScript基礎文法:処理を組み立てる
for ループで合計を求める

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 ループで合計を求める

for の3つの式
解説

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

  • for (初期化; 条件; 更新) で、配列を先頭から順に処理できます
  • 集計は「ループの外で用意し、中で更新し、外で返す」形になります

要素が増えるたびに、行を書き足すはめになる

山田 太郎さんの作品には、それぞれ閲覧数が付いています。合計を出したいとき、ここまでの知識ではこう書くしかありません。

JavaScript

const views = [120, 80, 45]; console.log(views[0] + views[1] + views[2]); // => 245

3 つならまだ書けます。ですが作品が 20 個になったら views[19] まで並べることになり、しかも作品が 1 つ増えるたびにこの行を書き直すはめになります。要素数が変わっても書き直さずに済む道具が for 文です。

丸カッコの中は 3 つに分かれている

for 文の丸カッコには、セミコロンで区切られた 3 つの式が並びます。

JavaScript

for (初期化; 条件; 更新) { // くり返したい処理 }
式いつ動くか配列を回すときの定番
初期化ループが始まる前に 1 回だけlet i = 0
条件毎回のくり返しの前に判定i < arr.length
更新本体を実行したあと毎回i++

配列を先頭から末尾まで回す形は、ほぼ固定です。インデックスは 0 から始まるので初期化は let i = 0、最後のインデックスは length - 1 なので条件は i < arr.length になります。

JavaScript

const titles = ["プロフィールサイト", "自己紹介カード", "スキル一覧の表"]; for (let i = 0; i < titles.length; i++) { console.log(i, titles[i]); } // => 0 プロフィールサイト // => 1 自己紹介カード // => 2 スキル一覧の表

i が 3 になったところで条件 3 < 3 が偽になり、ループを抜けます。動きが読めなくなったら、小さい配列で 1 周ずつ紙に書き出してください。地味ですが最短の解決法です。

解説

i は index の頭文字で、ループの番号として世界中で使われている慣習です。C でも Java でも Python でも同じなので、i を見たら「ループの番号だな」と読めるようになります。

外で用意して、中で更新して、外で返す

くり返して 1 つの答えを組み立てるときの形は決まっています。ためる変数をループの外で用意し、ループの中で更新し、ループを抜けてから返します。

JavaScript

let joined = ""; for (let i = 0; i < titles.length; i++) { joined += titles[i]; // 中で更新する } console.log(joined); // ループを抜けてから使う

joined は中身が変わるので const ではなく let です。そして初期値をどう置くかが要点になります。文字列をつなぐなら空文字、数を足し合わせるなら 0 から始めます。こうしておくと、空の配列を渡されたときにも自然に正しい答えが出ます。要素が 0 個なら条件が最初から偽で本体は 1 度も動かず、初期値がそのまま答えになるからです。

同じくらい大事なのが return を置く場所です。ループの中に書くと 1 周目で関数が終わってしまい、1 件ぶんの結果しか返りません。全部を回し終えたあと、ループの外で返してください。

よくある間違い

  • 区切りをカンマにする — 3 つの式はセミコロンで区切ります。カンマで書くと SyntaxError になります
  • 条件で <= を使う — i <= titles.length にすると、最後に存在しない番号を触ります。数を集計している場合は undefined を足して NaN になります
  • 更新を書き忘れて無限ループ — i++ を忘れると i がずっと 0 のままで、条件が真であり続けます。ブラウザのタブが固まるので、書いたらまず更新式を確かめてください

要件

  1. 関数名は totalViews、引数は数値の配列 views 1 つ、戻り値は数値
  2. くり返しには for 文を使うこと (for-of や reduce ではなく、インデックスを使う for)
  3. 合計用の変数を 0 で初期化し、ループの外で return すること

入出力例

totalViews([]) → 0 totalViews([120]) → 120 totalViews([120,80,45]) → 245 totalViews([0,0,0]) → 0 totalViews([10,20,30,40]) → 100

ヒント

ループの外で合計用の変数を `0` にしてから、ループの中で足し込みます

`for (let i = 0; i < views.length; i++)` と書き、中で `total += views[i];` とします

`return` はループの中ではなく外に置きます。中に置くと 1 周目で関数が終わってしまいます

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

関連レッスン

  • for-of で配列を走査する

    配列の全要素を先頭から順に処理する専用の構文が `for-of` です。インデックスを書かずに要素そのものを受け取れます。

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

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

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

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

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

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

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

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

  • 配列サイズ固定の同型データの集まり
  • 処理計算や代入を表す長方形
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • 素数1 と自分自身でしか割り切れない自然数
  • インデックスDB 検索を速くする索引
  • 変数データに名前をつけて参照する仕組み
  • 関数処理に名前を付けて再利用できる単位
  • ブラウザユーザーから見たWebのクライアント
main.js
学習モード
エディタを読み込んでいます

メモ

for ループで合計を求める

⌘S で保存