配列は「番号つきの棚」でした。でも、しまちゃんの名前・住んでいる場所・すきなもののように、種類の違う情報をまとめたいときに番号で管理するのは大変です。そこで登場するのがオブジェクト。値それぞれに名前のラベルを貼ってしまえる引き出しです。
配列だと分かりにくい例
const shima = ["しまちゃん", "ゆきぐに", "おえかき"];
console.log(shima[1]);shima[1]が何を指しているのか、番号だけでは思い出せません。オブジェクトなら、こう書けます。
const shima = {
name: "しまちゃん",
from: "ゆきぐに",
like: "おえかき"
};
console.log(shima.from);shima.from——読んだだけで「住んでいる場所」だと分かります。
書き方のきまり
const shima = {
name: "しまちゃん",
age: 3
};| 部分 | 意味 |
|---|---|
{ } | 引き出し全体のいれもの(配列の[ ]にあたるもの) |
name | キー=ラベルの名前 |
: | ラベルと中身の区切り |
"しまちゃん" | 値=中身 |
, | 次のラベルとの区切り |
キーの名前は自分で自由に決められます。中身は文字でも数でも、配列でも構いません。
取り出す・書きかえる
取り出すときはドットでつなぎます。
console.log(shima.name);
console.log(shima.age);書きかえも、取り出すのと同じ形に=をつけるだけです。
shima.age = 4;
console.log(shima.age);新しいラベルをあとから足すこともできます。
shima.hobby = "さんぽ";配列と同じで、constで作っても中身の変更は自由です(引き出しごと別のものに取りかえるのがダメ、というルールでした)。
配列とオブジェクトの使い分け
| 配列 | オブジェクト | |
|---|---|---|
| 形 | ["A", "B", "C"] | { name: "A", age: 3 } |
| 呼び出し方 | 番号([0]) | ラベル(.name) |
| 向いているもの | 同じ種類のものが並ぶ | 1つのものの違う情報 |
| 例 | すきなもの一覧、点数の一覧 | プロフィール、設定、商品1件ぶん |
迷ったら「順番に意味があるか」で考えます。順番が大事なら配列、名前で呼びたいならオブジェクトです。
組み合わせるともっと便利
オブジェクトの中に配列を入れることもできます。
const shima = {
name: "しまちゃん",
likes: ["おえかき", "ラーメン", "ゲーム"]
};
console.log(shima.likes[0]);
console.log(shima.likes.length);shima.likesで棚を取り出し、そこから[0]で1つ取り出す——左から順に読むのがコツです。
このレッスンのまとめ
- オブジェクトは
{ キー: 値, … }——ラベルつきの引き出し - 取り出すのは
名前.キー。書きかえも追加も同じ形でできる - 同じ種類の並びは配列、1つのものの情報はオブジェクト