JS初めてのJavaScript

Day 3関数とオブジェクト — 処理とデータをまとめる

オブジェクト — 関連するデータをひとまとめにする

{ name: "太郎", age: 20 } のようにデータをまとめ、user.name でアクセスする。オブジェクトの配列も学ぶ。

オブジェクトは「名前付きの引き出し」

配列が「番号で並んだ箱」だとすると、オブジェクトは「名前の付いた引き出しの集まり」です。1人のユーザーには名前・年齢・メールなど、種類の違うデータがまとまっています。これを別々の変数にバラバラに持つより、1つのオブジェクトにまとめたほうが扱いやすくなります。

JAVASCRIPT
const user = {
  name: "太郎",
  age: 20,
  email: "taro@example.com",
};
波かっこ {} の中に「キー: 値」を並べる。これがオブジェクト

name や age のような名前をプロパティ(またはキー)、その右の "太郎" や 20 を値と呼びます。中の値を取り出すときは、オブジェクト名のうしろにドットとプロパティ名をつなげます。これをドット記法と呼びます。

JAVASCRIPT
console.log(user.name); // "太郎"
console.log(user.age);  // 20

user.age = 21;          // 値を書き換えることもできる
console.log(user.age);  // 21
user.name のように「オブジェクト.プロパティ」で値を読み書きする

さらに強力なのが、オブジェクトを配列に並べる形です。同じ形のオブジェクトをいくつも並べると、「データの一覧」を表現できます。ユーザー一覧・商品一覧・投稿一覧など、アプリで扱うデータのほとんどはこの形をしています。

JAVASCRIPT
const users = [
  { name: "太郎", age: 20 },
  { name: "花子", age: 25 },
  { name: "次郎", age: 30 },
];

console.log(users[0].name); // "太郎"
console.log(users[1].age);  // 25
オブジェクトの配列 = データの一覧。users[番号].プロパティ でたどる

なぜオブジェクトでまとめるのか

name1, age1, name2, age2 のように変数をバラバラに持つと、どれが同じ人のデータか分からなくなります。1人を1つのオブジェクトにまとめれば「太郎の情報はこの引き出し一式」とはっきりし、関数に渡すのも user 1つで済みます。APIから返ってくるデータもほぼこの形です。

無いプロパティは undefined

user.phone のように存在しないプロパティを読むと、エラーではなく undefined が返ります。「値が取れない」ときは、プロパティ名のつづり違い(name と names など)を疑いましょう。ドット記法は名前が命なので、1文字違うと別物になります。

  • オブジェクトは { キー: 値 } の形で関連データをまとめる
  • 値を読み書きするときは user.name のようにドット記法を使う
  • 同じ形のオブジェクトを並べた配列が「データの一覧」になる
  • 配列の中のオブジェクトは users[0].name のようにたどる

AIにはこう聞く

「ユーザーを表すオブジェクトを作って。名前・年齢・メールを持たせて」と頼めば、キーと値の形で作ってくれます。一覧がほしいときは「ユーザーが3人入った配列にして」と伝えれば、オブジェクトの配列を返してくれます。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

const user = { name: "太郎", age: 20 }; のとき、user.name の値はどれ?

Q2

const users = [{ name: "太郎" }, { name: "花子" }]; のとき、users[1].name はどれ?

Q3

1人分の情報を name1, age1, name2, age2 のようにバラバラの変数で持つより、オブジェクトの配列で持つほうがよいのはなぜですか。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。