Day 3・関数とオブジェクト — 処理とデータをまとめる
オブジェクト — 関連するデータをひとまとめにする
{ name: "太郎", age: 20 } のようにデータをまとめ、user.name でアクセスする。オブジェクトの配列も学ぶ。
オブジェクトは「名前付きの引き出し」
配列が「番号で並んだ箱」だとすると、オブジェクトは「名前の付いた引き出しの集まり」です。1人のユーザーには名前・年齢・メールなど、種類の違うデータがまとまっています。これを別々の変数にバラバラに持つより、1つのオブジェクトにまとめたほうが扱いやすくなります。
const user = {
name: "太郎",
age: 20,
email: "taro@example.com",
};name や age のような名前をプロパティ(またはキー)、その右の "太郎" や 20 を値と呼びます。中の値を取り出すときは、オブジェクト名のうしろにドットとプロパティ名をつなげます。これをドット記法と呼びます。
console.log(user.name); // "太郎"
console.log(user.age); // 20
user.age = 21; // 値を書き換えることもできる
console.log(user.age); // 21さらに強力なのが、オブジェクトを配列に並べる形です。同じ形のオブジェクトをいくつも並べると、「データの一覧」を表現できます。ユーザー一覧・商品一覧・投稿一覧など、アプリで扱うデータのほとんどはこの形をしています。
const users = [
{ name: "太郎", age: 20 },
{ name: "花子", age: 25 },
{ name: "次郎", age: 30 },
];
console.log(users[0].name); // "太郎"
console.log(users[1].age); // 25なぜオブジェクトでまとめるのか
name1, age1, name2, age2 のように変数をバラバラに持つと、どれが同じ人のデータか分からなくなります。1人を1つのオブジェクトにまとめれば「太郎の情報はこの引き出し一式」とはっきりし、関数に渡すのも user 1つで済みます。APIから返ってくるデータもほぼこの形です。
無いプロパティは undefined
user.phone のように存在しないプロパティを読むと、エラーではなく undefined が返ります。「値が取れない」ときは、プロパティ名のつづり違い(name と names など)を疑いましょう。ドット記法は名前が命なので、1文字違うと別物になります。
- オブジェクトは { キー: 値 } の形で関連データをまとめる
- 値を読み書きするときは user.name のようにドット記法を使う
- 同じ形のオブジェクトを並べた配列が「データの一覧」になる
- 配列の中のオブジェクトは users[0].name のようにたどる
AIにはこう聞く
「ユーザーを表すオブジェクトを作って。名前・年齢・メールを持たせて」と頼めば、キーと値の形で作ってくれます。一覧がほしいときは「ユーザーが3人入った配列にして」と伝えれば、オブジェクトの配列を返してくれます。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
const user = { name: "太郎", age: 20 }; のとき、user.name の値はどれ?
const users = [{ name: "太郎" }, { name: "花子" }]; のとき、users[1].name はどれ?
1人分の情報を name1, age1, name2, age2 のようにバラバラの変数で持つより、オブジェクトの配列で持つほうがよいのはなぜですか。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。