JavaScript PR

JavaScript – オブジェクト ループの基礎から応用までを徹底解説!

記事内に商品プロモーションを含む場合があります

本記事では、
JavaScriptでオブジェクトをループする方法を
基礎から応用まで、わかりやすく解説します。

JavaScriptでオブジェクトを操作する際に、
ループ処理は非常に重要です。
しかし、配列のように簡単にループできないため、
初心者は戸惑うことが多いでしょう。

JavaScriptのオブジェクトとは?

オブジェクトと配列の違い

Javascriptのループ処理では、
mapやforEachなどの関数は、
配列を操作する時しか使用できません。
オブジェクトを操作する際は、
別の方法が必要です。

オブジェクトは、
キー(名前)とバリュー(値)のペアを
持つデータ構造です。

一方、
配列は順序付けされたデータのリストです。

配列はforEachmapなどの
便利なループメソッドを使えますが、
オブジェクトにはこれらが直接使えません。
オブジェクトは、特定のキーに対応する値を
扱うために設計されています。

Example:
次の例で、オブジェクトと配列の違いを見てみましょう。

// 配列の場合
let fruits = ["apple", "banana", "cherry"];

// オブジェクトの場合
let person = { name: "John", age: 30, occupation: "Engineer" };

配列では順番にデータが並んでいるのに対し、
オブジェクトでは名前(キー)でデータを管理します。
この違いが、ループ処理の方法に影響を与えます。

オブジェクトのループ処理の基本手法

for…inループ

for...inループは、
オブジェクトのすべての列挙可能なプロパティを
順に反復処理するための基本的な方法です。

このループを使うと、
オブジェクトの各プロパティに簡単にアクセスできます。
ただし、継承されたプロパティも含まれるため、注意が必要です。

Example:

let person = { name: "John", age: 30 };
for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ": " + person[key]);
  }
}

この例では、
hasOwnProperty()を使うことで、
オブジェクト自身のプロパティのみを扱うようにしています。

for...inループは、
シンプルにオブジェクトを反復処理したいときに便利です。

Object.keys()

Object.keys()は、
オブジェクトのキー(プロパティ名)を
配列として取得する方法です。

配列としてキーを取得することで、
forEachmapなどの配列操作メソッドを
使ってループ処理ができます。

Example:

let person = { name: "John", age: 30 };
Object.keys(person).forEach(key => {
  console.log(key + ": " + person[key]);
});

Object.keys()を使えば、
キーの配列を取得して、
それを使ってオブジェクトのプロパティに
簡単にアクセスできます。

Object.values()

Object.values()は、
オブジェクトのすべての値を
配列として取得します。

値の配列を取得することで、
キーに関係なく値だけをループ処理できます。

Example:

let person = { name: "John", age: 30 };
Object.values(person).forEach(value => {
  console.log(value);
});

この方法は、オブジェクトのすべての値を
一括して処理したい場合に役立ちます。

Object.entries()

Object.entries()は、
オブジェクトのキーと値を
ペアにして配列として取得します。

キーと値の両方にアクセスできるため、
より柔軟にオブジェクトを操作できます。

Example:

let person = { name: "John", age: 30 };
Object.entries(person).forEach(([key, value]) => {
  console.log(key + ": " + value);
});

Object.entries()は、
キーと値の両方を必要とするループ処理に最適です。

オブジェクトを配列に変換してループ処理

なぜオブジェクトを配列に変換するのか?

オブジェクトを配列に変換することで、
配列特有の便利なメソッドを活用できます。

配列には、
forEachmapなどのメソッドが用意されており、
これらを使うことで、ループ処理がより直感的かつ効率的になります。

例えば、Object.keys()で取得したキーの配列を使って、
forEachメソッドを利用することで、
オブジェクトの各プロパティにアクセスできます。

let person = { name: "John", age: 30 };
Object.keys(person).forEach(key => {
  console.log(key + ": " + person[key]);
});


オブジェクトを配列に変換することで、
JavaScriptの強力な配列メソッドを
フル活用できるようになります。

配列に変換して操作する具体例

オブジェクトを配列に変換することで、
ループ処理の柔軟性が増します。

配列操作は直感的であり、
特定のメソッドを利用することで、
効率的な処理が可能です。

Example:

let person = { name: "John", age: 30 };

// Object.keys()でキーの配列を取得し、forEachでループ処理
Object.keys(person).forEach(key => {
  console.log(key + ": " + person[key]);
});

// Object.values()で値の配列を取得し、forEachでループ処理
Object.values(person).forEach(value => {
  console.log(value);
});

// Object.entries()でキーと値のペアの配列を取得し、forEachでループ処理
Object.entries(person).forEach(([key, value]) => {
  console.log(key + ": " + value);
});


これらのメソッドを組み合わせることで、
オブジェクトを効率的に操作できます。

ループメソッドの比較と使い分け

for…inループ

for...inループはオブジェクトのプロパティを
手軽にループ処理できるが、
継承プロパティも対象になるため注意が必要です。

オブジェクトのすべてのプロパティに
アクセスしたい場合には便利ですが、
予期しないプロパティが含まれる可能性があります。

Example:

let person = { name: "John", age: 30 };
for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ": " + person[key]);
  }
}


自身のプロパティのみを扱うためには、
hasOwnProperty()を併用するのが一般的です。

Object.keys() / Object.values() / Object.entries()

これらのメソッドを使うと、
配列のようにオブジェクトを操作できるため、
より直感的なループ処理が可能です。

特に、プロパティのキーや値にのみ
フォーカスしたい場合、
Object.keys()Object.values()が役立ちます。

Object.entries()を使えば、
キーと値の両方を同時に操作でき、
複雑な操作も容易になります。

まとめ

本記事では、
JavaScriptでオブジェクトをループするための
さまざまな方法を紹介しました。

オブジェクトのループに支える方法は
以下の4つがあります。

  • for…in
  • Object.keys()
  • Object.values()
  • Object.entries()

どの手法を使うかは、
目的に応じて使い分けることが重要です。

オブジェクトをループしたい時に迷った場合は
ぜひ本記事を参考にしてみてください!


これを機に、オブジェクト操作のスキルをさらに磨いていきましょう!