カテゴリ: JavaScript 更新日: 2026/02/14

JavaScriptのfor...in文でオブジェクトをループ処理する方法

JavaScriptのfor...in文でオブジェクトをループ処理する方法
JavaScriptのfor...in文でオブジェクトをループ処理する方法

先生と生徒の会話形式で理解しよう

生徒

「JavaScriptでオブジェクトの中にある情報を繰り返し取り出すにはどうしたらいいですか?」

先生

「オブジェクトの中身を一つずつ見るときは、for...in文という方法がありますよ。」

生徒

「for...in文って何ですか?for文やwhile文とは違うんですか?」

先生

「似ていますが、特にオブジェクト(名前と値のペア)を繰り返す専用のループです。初心者にも分かるように説明しますね!」

1. for...in文とは何?

1. for...in文とは何?
1. for...in文とは何?

for...in文はオブジェクトのプロパティ(キーと値のペア)を一つずつ取り出すためのループ処理です。配列ではなく、名前付きの項目が入ったオブジェクトに向いています。

オブジェクトとは、たとえば「人の名前と年齢」などの情報をまとめたものです。

2. for...in文の基本構文

2. for...in文の基本構文
2. for...in文の基本構文

基本的な書き方は次の通りです。


for (let key in object) {
  // object[key] にアクセス
}

ここで、keyはプロパティ名を表す文字列、objectはループしたいオブジェクトです。

3. 実際の例:オブジェクトの情報を表示する

3. 実際の例:オブジェクトの情報を表示する
3. 実際の例:オブジェクトの情報を表示する

たとえば、次のようなオブジェクトがあります。


const person = {
  name: "太郎",
  age: 28,
  city: "東京"
};
for (let key in person) {
  console.log(key + ":" + person[key]);
}

name:太郎
age:28
city:東京

プロパティ名(name・age・city)がkeyに入り、person[key]で値にアクセスしています。

4. for...in文の使いどころ

4. for...in文の使いどころ
4. for...in文の使いどころ

for...in文は次のような場面に便利です:

  • オブジェクトのすべてのプロパティを調べたいとき
  • フォームの入力項目や設定項目を一括で処理したいとき
  • 動的に変わるオブジェクトの内容を扱いたいとき

5. 注意点:プロトタイプ継承のプロパティもループされる

5. 注意点:プロトタイプ継承のプロパティもループされる
5. 注意点:プロトタイプ継承のプロパティもループされる

JavaScriptのオブジェクトは継承で親から受け継いだプロパティも持てます。そのため、for...in文は見かけ以上のプロパティも取り出す可能性があります。

その回避策としては、hasOwnProperty()メソッドで「自分自身のプロパティかどうか」をチェックすると安全です。

6. 実際に安全に使う例

6. 実際に安全に使う例
6. 実際に安全に使う例

先ほどのpersonオブジェクトにfor...in文とチェックを加えてみます。


for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + "→" + person[key]);
  }
}

name→太郎
age→28
city→東京

こうすることで、自分が定義したプロパティだけを安全に扱えます。

7. 配列に使うときは注意

7. 配列に使うときは注意
7. 配列に使うときは注意

for...in文は配列にも使えますが、配列は順番が大切なのでfor...for...of文を使う方が扱いやすいです。

オブジェクトのループには最適ですが、配列には別のループのほうが適しています。

8. for...in文のメリットとデメリット

8. for...in文のメリットとデメリット
8. for...in文のメリットとデメリット
  • メリット:オブジェクトの内容を簡単にくり返せる
  • デメリット:継承プロパティも表示される可能性がある

メリットを活かすには、hasOwnProperty()チェックを併用して安全に使うのがおすすめです。

9. まとめなしに記事はここで終わり

9. まとめなしに記事はここで終わり
9. まとめなしに記事はここで終わり

今回はJavaScriptのfor...in文を、初心者でもわかるように丁寧に解説しました。オブジェクトのプロパティを一つずつ扱うときに役立つ仕組みです。使い方や注意点を押さえて、プログラミングに挑戦してみてください。

まとめ

まとめ
まとめ

ここまでJavaScriptのfor...in文について、その基本的な使い方から実戦で役立つ注意点までを詳しく解説してきました。Web開発において、データベースから取得したJSON形式のデータや、ユーザーが入力したフォームの多種多様な設定値を一括で処理する際、このループ構文は非常に強力な武器となります。

オブジェクト操作の基本を再確認

JavaScriptにおける「オブジェクト」は、現実世界の「物」をプログラムで表現する際に欠かせない構造です。例えば、ユーザー情報を扱う際、名前・メールアドレス・年齢といった複数の属性をひとまとめにするためにオブジェクトを使用します。for...in文は、これらの「名前(キー)」を順次取り出し、対応する「値」に対して処理を行うためのもっとも直感的な手段です。

実践的な活用例:動的なスタイル変更や設定値の反映

実際の開発現場では、以下のような場面でfor...inがよく使われます。例えば、ボタンをクリックした際に複数のCSSスタイルを一度に変更したい場合、スタイル設定をオブジェクトにまとめ、ループで一気に適用することができます。


const newStyles = {
    color: "white",
    backgroundColor: "blue",
    fontSize: "20px",
    padding: "10px"
};

const element = document.getElementById("myButton");

for (let prop in newStyles) {
    if (newStyles.hasOwnProperty(prop)) {
        element.style[prop] = newStyles[prop];
    }
}

このように記述することで、コードの重複を避け、管理しやすいプログラムを記述することが可能になります。また、APIから返却された複雑なオブジェクト構造を解析し、画面上のリストやテーブルに表示する際にも、for...in文は欠かせません。

配列用ループ(for...of)との使い分けの重要性

初心者の方が最初につまずきやすいポイントとして、for...infor...ofの混同があります。for...inは「プロパティ名(インデックス番号)」を取得するのに対し、ES6から導入されたfor...ofは「値そのもの」を直接取得します。

配列に対してfor...inを使用すると、添字(0, 1, 2...)が文字列として返されてしまうため、数値計算に利用しようとすると意図しない挙動(バグ)の原因となることがあります。そのため、「オブジェクトを扱うときはfor...in」、「配列の要素を扱うときはfor...of」という明確な使い分けを自分の中でルール化しておくことが、スキルアップへの近道です。

安全なコードを書くためのベストプラクティス

記事の中でも触れましたが、hasOwnProperty()を用いたチェックは現代のJavaScript開発においても依然として重要です。特に外部ライブラリを導入しているプロジェクトでは、意図せずオブジェクトのプロトタイプが拡張されているケースがあるためです。

さらに最近では、Object.keys()Object.values()Object.entries()といったメソッドと、forEachfor...ofを組み合わせて、より宣言的にデータを処理する手法も主流になっています。


// Object.entries() を使ったモダンなループの書き方
const userScores = {
    Math: 95,
    English: 88,
    Science: 92
};

for (const [subject, score] of Object.entries(userScores)) {
    console.log(`${subject}の点数は${score}点です。`);
}

Mathの点数は95点です。
Englishの点数は88点です。
Scienceの点数は92点です。

基礎となるfor...in文の仕組みを正しく理解していれば、こうした応用的な書き方もスムーズに習得できるはずです。まずは基本を大切に、自分の手でコードを書いて動かしてみることから始めてみてください。

先生と生徒の振り返り会話

生徒

「先生、for...in文の使い方がやっとイメージできました。オブジェクトの中身を丸ごとチェックしたいときに便利なんですね!」

先生

「その通りです。ただ、途中の注意点でもお話ししたように、配列に使うのは避けたほうが無難ですよ。配列には、順番が保証されている他のループ方法がありますから。」

生徒

「なるほど。もし配列で使ってしまうと、どんな困ったことが起きるんですか?」

先生

「良い質問ですね。for...inはインデックスを『文字列』として取り出すので、例えば『1 + 1』が『2』ではなく『11』になってしまうような計算ミスが起きやすいんです。また、予期しないプロパティまで取得してしまうリスクもあります。」

生徒

「うわ、それは怖いですね……。必ずhasOwnPropertyを使ってチェックするか、適切なループ文を選ぶように気をつけます!」

先生

「その意識があれば大丈夫です!実際に、自分のプロフィール情報を入れたオブジェクトを作って、コンソールに表示させる練習をしてみましょう。手を動かすことが一番の勉強になりますよ。」

生徒

「はい!さっそくやってみます。趣味や特技をオブジェクトにして、全部書き出してみようと思います。ありがとうございました!」

関連記事:
カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptの条件式におけるnull・undefined判定のコツ!初心者でもわかる判定方法ガイド
New2
JavaScript
JavaScriptの条件式で論理演算子(&&, ||, !)を活用する方法!初心者でもわかる使い方ガイド
New3
TypeScript
TypeScriptでエラー処理を共通関数化して効率的に開発しよう!初心者向け例外処理ガイド
New4
JavaScript
JavaScriptの条件式における比較演算子の使い方まとめ!初心者でもわかる基本ルールと活用法
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのtoStringとString関数の違いを初心者向けに解説
No.3
Java&Spring記事人気No3
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.4
Java&Spring記事人気No4
JavaScript
JavaScriptで統一感のあるコードを書くための基本ルール完全ガイド初心者向けコーディング規約入門
No.5
Java&Spring記事人気No5
JavaScript
JavaScriptのonclick・onchangeなどの基本イベントを理解しよう
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptプログラムの実行方法まとめ!ブラウザ・Node.js・コンソールの使い方
No.7
Java&Spring記事人気No7
JavaScript
JavaScriptの数値フォーマット(小数点以下の桁数調整)を学ぼう
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptのnever型を使ったエラーハンドリング!例外処理を極める安全なコードの書き方