配列とオブジェクト
複数のデータをまとめて管理する
配列とオブジェクトとは?
日常での例え
配列 = 番号付きロッカー
「1番に〇〇、2番に△△...」
順番が大事な時に使う
オブジェクト = 名前付きロッカー
「名前に〇〇、年齢に△△...」
意味のある名前で管理したい時
なぜ配列とオブジェクトが必要?
個別の変数だけだと:
- 100人のユーザーに100個の変数が必要 → 管理が大変
- 「全員の名前を表示」のような一括処理ができない
配列/オブジェクトを使うと:まとめて管理、一括処理、追加・削除も簡単!
配列の基本
配列の作成とアクセス
[]で作成、インデックスでアクセス
javascript
// 配列の作成
const fruits = ["りんご", "バナナ", "オレンジ"];
// インデックスでアクセス(0から始まる)
fruits[0]; // "りんご"
fruits[1]; // "バナナ"
fruits[2]; // "オレンジ"
// 長さ
fruits.length; // 3
// 要素の変更
fruits[1] = "ぶどう";プレビュー
fruits[0] // → "りんご"
fruits[1] // → "バナナ"
fruits.length // → 3
配列の操作メソッド
追加・削除・検索
javascript
const arr = [1, 2, 3];
// 末尾に追加
arr.push(4); // [1, 2, 3, 4]
// 末尾から削除
arr.pop(); // [1, 2, 3]
// 先頭に追加
arr.unshift(0); // [0, 1, 2, 3]
// 先頭から削除
arr.shift(); // [1, 2, 3]
// 含まれているか
arr.includes(2); // true
// インデックスを取得
arr.indexOf(2); // 1プレビュー
.push(4) // 末尾に追加
.pop() // 末尾を削除
.includes(2) // → true
.indexOf(2) // → 1
配列の変換メソッド
map, filter, reduce
javascript
const numbers = [1, 2, 3, 4, 5];
// map: 各要素を変換して新配列を作成
const doubled = numbers.map(n => n * 2);
// [2, 4, 6, 8, 10]
// filter: 条件に合う要素だけ抽出
const evens = numbers.filter(n => n % 2 === 0);
// [2, 4]
// reduce: 1つの値にまとめる
const sum = numbers.reduce((acc, n) => acc + n, 0);
// 15
// チェーン(連結)できる
const result = numbers
.filter(n => n > 2)
.map(n => n * 10);
// [30, 40, 50]プレビュー
.map(n => n * 2) // [2, 4, 6, 8, 10]
.filter(n => n % 2 === 0) // [2, 4]
.reduce((acc, n) => acc + n, 0) // 15
オブジェクトの基本
オブジェクトの作成とアクセス
キーと値のペア
javascript
// オブジェクトの作成
const user = {
name: "田中太郎",
age: 25,
email: "tanaka@example.com"
};
// ドット記法でアクセス
user.name; // "田中太郎"
user.age; // 25
// ブラケット記法(変数キーに便利)
user["email"]; // "tanaka@example.com"
const key = "name";
user[key]; // "田中太郎"
// プロパティの追加・変更
user.city = "東京";
user.age = 26;プレビュー
user.name // → "田中太郎"
user.age // → 25
user["email"] // → "tanaka@example.com"
オブジェクトのメソッド
Object.keys, values, entries
javascript
const user = { name: "田中", age: 25, city: "東京" };
// キーの配列
Object.keys(user);
// ["name", "age", "city"]
// 値の配列
Object.values(user);
// ["田中", 25, "東京"]
// [キー, 値] の配列
Object.entries(user);
// [["name", "田中"], ["age", 25], ["city", "東京"]]
// プロパティの存在確認
"name" in user; // true
user.hasOwnProperty("age"); // trueプレビュー
Object.keys(user) // ["name", "age", "city"]
Object.values(user) // ["田中", 25, "東京"]
"name" in user // true
スプレッド構文
「スプレッド構文(...)」とは?
配列やオブジェクトを展開(バラバラにする)記号。
「箱の中身を取り出して並べる」イメージです。
配列のコピー、結合、オブジェクトのマージに使います。
配列のスプレッド
...で展開・コピー
javascript
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
// 配列の結合
const combined = [...arr1, ...arr2];
// [1, 2, 3, 4, 5, 6]
// 配列のコピー
const copy = [...arr1];
// 途中に挿入
const inserted = [0, ...arr1, 4];
// [0, 1, 2, 3, 4]プレビュー
[...arr1, ...arr2] // [1, 2, 3, 4, 5, 6]
[0, ...arr1, 4] // [0, 1, 2, 3, 4]
オブジェクトのスプレッド
マージやコピー
javascript
const defaults = { theme: "light", lang: "ja" };
const settings = { theme: "dark" };
// オブジェクトのマージ(後から上書き)
const merged = { ...defaults, ...settings };
// { theme: "dark", lang: "ja" }
// プロパティの追加
const updated = { ...defaults, fontSize: 16 };
// 一部を変更したコピー
const newSettings = { ...settings, lang: "en" };プレビュー
// defaults を settings で上書きマージ
{ ...defaults, ...settings }
// → { theme: "dark", lang: "ja" }
分割代入
「分割代入」とは?
配列やオブジェクトから必要な値だけを取り出す構文。
「箱から特定のものだけ取り出して、変数に入れる」イメージです。
配列の分割代入
配列から変数に展開
javascript
const colors = ["red", "green", "blue"];
// 分割代入
const [first, second, third] = colors;
// first = "red", second = "green", third = "blue"
// 一部だけ取得
const [primary, , tertiary] = colors;
// primary = "red", tertiary = "blue"
// 残りをまとめる
const [head, ...rest] = colors;
// head = "red", rest = ["green", "blue"]プレビュー
const [first, second] = colors
// first = "red", second = "green"
オブジェクトの分割代入
プロパティを変数に展開
javascript
const user = {
name: "田中",
age: 25,
email: "tanaka@example.com"
};
// 分割代入
const { name, age } = user;
// name = "田中", age = 25
// 別名をつける
const { name: userName } = user;
// userName = "田中"
// デフォルト値
const { city = "不明" } = user;
// city = "不明"
// 関数の引数で使う
function greet({ name, age }) {
console.log(name + "は" + age + "歳");
}プレビュー
const { name, age } = user
// name = "田中", age = 25
JSON
「JSON(ジェイソン)」とは?
JavaScript Object Notationの略。
データをやり取りするための「共通フォーマット」です。
なぜJSONが必要?
サーバーとブラウザでデータをやり取りする時、
「文字列」にしないと送れない → JSONで文字列に変換!
受け取った後は、オブジェクトに戻して使う。
JSON変換
文字列とオブジェクトの相互変換
javascript
const user = { name: "田中", age: 25 };
// オブジェクト → JSON文字列
const jsonString = JSON.stringify(user);
// '{"name":"田中","age":25}'
// 整形して出力
JSON.stringify(user, null, 2);
// {
// "name": "田中",
// "age": 25
// }
// JSON文字列 → オブジェクト
const parsed = JSON.parse(jsonString);
// { name: "田中", age: 25 }プレビュー
JSON.stringify(user)
'{"name":"田中","age":25}'
JSON.parse(jsonString)
// → オブジェクトに戻る