オブジェクト
初級読み方:オブジェクト|英語:Object
キーと値のペアでデータを管理する構造で、{ name: "田中", age: 15 } の形だよ。
やさしい説明
オブジェクトとは、関連するデータをまとめて管理するデータ構造です。「名前(キー)」と「値」のペア(プロパティ)で構成されます。
生徒の情報カードをイメージしてください。名前、年齢、クラス——1人の情報をまとめて1つのオブジェクトに入れます。
配列が「番号(インデックス)で管理」するのに対し、オブジェクトは「名前(キー)で管理」します。user.name のようにドットでアクセスします。
具体例・使い方
const user = {
name: "太郎",
age: 15,
hobby: "ゲーム",
};
// プロパティへのアクセス(ドット記法)
console.log(user.name); // "太郎"
console.log(user.age); // 15
// ブラケット記法(キーが変数のとき)
const key = "name";
console.log(user[key]); // "太郎"
// プロパティの追加・変更・削除
user.school = "○○中学校"; // 追加
user.age = 16; // 変更
delete user.hobby; // 削除 よく使うオブジェクトの操作
// 分割代入: プロパティを変数に取り出す
const { name, age } = user;
console.log(name); // "太郎"
// スプレッド構文: オブジェクトのコピー・マージ
const updated = { ...user, age: 17 }; // ageだけ上書き
// Object.keys / values / entries
const keys = Object.keys(user); // ["name", "age"]
const vals = Object.values(user); // ["太郎", 16]
Object.entries(user).forEach(([k, v]) => {
console.log(k, v); // name 太郎 / age 16 ...
});
// オブジェクトの配列(APIレスポンスによく見られる)
const students = [
{ name: "太郎", score: 85 },
{ name: "花子", score: 92 },
];
students.filter(s => s.score >= 90); // [花子] 分割代入(const { name, age } = user)は実務で頻繁に使われます。関数の引数やAPIレスポンスの処理で特によく見かけます。
いつ使う?
- ユーザー情報(名前・メール・権限)をまとめるとき
- APIのレスポンスデータを扱うとき(多くはオブジェクト形式)
- 設定値や定数をグループ化するとき
- フォームの入力値をまとめて管理するとき
間違いやすいポイント
❌ 存在しないプロパティにアクセスしてもエラーにならない
存在しないキーにアクセスすると undefined が返ります。エラーにならないのでタイポに気づきにくいです。オプショナルチェーン(user?.email)を活用しましょう。
const user = { name: "太郎" };
user.email; // undefined(エラーにならない!)
user.email.trim() // ❌ TypeError(undefinedのメソッドは呼べない)
// ✅ オプショナルチェーンで安全にアクセス
user?.email?.trim(); // undefined(エラーにならない) ❌ オブジェクトのコピーで参照が共有される
const b = a はオブジェクトのコピーではなく、同じオブジェクトへの参照です。独立したコピーを作るには { ...a }(スプレッド構文)を使いましょう。
よくある疑問
Q: 配列とオブジェクトの違いは?
A: 配列は「順番」で管理(インデックス)、オブジェクトは「名前」で管理(キー)します。順番が大事ならArray、名前で取り出したいならObjectです。
Q: オブジェクトにプロパティを追加するには?
A: obj.newKey = 値; で追加できます。削除は delete obj.key; です。
Q: オブジェクトの中身を全部見るには?
A: console.log(obj) で確認できます。Object.keys(obj) でキー一覧、Object.values(obj) で値一覧が取得できます。
関連用語
📖 関連レッスン
レッスンを見る →