ヒストリア284663 views
教育148958 views
高校生物549999 views
高校倫理1433840 views
世界の国560930 views
中学理科1626729 views
MathPython492025 views
いろは2988729 views
小学社会308762 views
高校物理158371 views
Help
Tools

English

配列とオブジェクトの相互変換

JavaScript では、配列とオブジェクトを相互に変換する場面がよくあります。Object のメソッドや Array のメソッドを組み合わせることで、柔軟なデータ変換が可能です。

オブジェクトから配列への変換

オブジェクトを配列に変換する方法は、何を取り出したいかによって使い分けます。

const user = { name: "田中", age: 25, city: "東京" };

// キーの配列
Object.keys(user);    // ["name", "age", "city"]

// 値の配列
Object.values(user);  // ["田中", 25, "東京"]

// [キー, 値] ペアの配列
Object.entries(user); // [["name", "田中"], ["age", 25], ["city", "東京"]]
メソッド戻り値
Object.keys()キーの配列
Object.values()値の配列
Object.entries()[キー, 値] の配列

配列からオブジェクトへの変換

[キー, 値] のペアからなる配列をオブジェクトに変換するには、Object.fromEntries() を使用します。

const entries = [
  ["name", "田中"],
  ["age", 25],
  ["city", "東京"]
];

const obj = Object.fromEntries(entries);
console.log(obj); // { name: "田中", age: 25, city: "東京" }

実践的な変換パターン

Object.entries() と Object.fromEntries() を組み合わせると、オブジェクトの変換処理を簡潔に書けます。

const prices = { apple: 100, banana: 80, orange: 120 };

// 全ての価格を1.1倍にする
const taxIncluded = Object.fromEntries(
  Object.entries(prices).map(([key, value]) => [key, value * 1.1])
);

console.log(taxIncluded);
// { apple: 110, banana: 88, orange: 132 }

配列をオブジェクトに変換(reduce 使用)

特定の条件でオブジェクトを構築する場合は、reduce() を使う方法もあります。

const users = [
  { id: 1, name: "田中" },
  { id: 2, name: "山田" },
  { id: 3, name: "佐藤" }
];

// id をキーにしたオブジェクトに変換
const userMap = users.reduce((acc, user) => {
  acc[user.id] = user;
  return acc;
}, {});

console.log(userMap);
// { 1: { id: 1, name: "田中" }, 2: { id: 2, name: "山田" }, ... }

Map との変換

Map オブジェクトとの相互変換も簡単に行えます。

// オブジェクト → Map
const obj = { a: 1, b: 2 };
const map = new Map(Object.entries(obj));

// Map → オブジェクト
const backToObj = Object.fromEntries(map);
オブジェクト → Map

Object.entries() で [キー, 値] の配列を作り、Map コンストラクタに渡します。

Map → オブジェクト

Map は iterable で [キー, 値] のペアを返すため、そのまま Object.fromEntries() に渡せます。

フィルタリングとの組み合わせ

オブジェクトのプロパティをフィルタリングする際にも、この変換パターンが活躍します。

const data = { a: 1, b: null, c: 3, d: undefined, e: 5 };

// null や undefined を除外
const cleaned = Object.fromEntries(
  Object.entries(data).filter(([key, value]) => value != null)
);

console.log(cleaned); // { a: 1, c: 3, e: 5 }

配列とオブジェクトの変換を自在に使いこなせると、データ処理の幅が大きく広がります。