JS

【JS】配列→オブジェクトに変換する5つの方法

JS

JavaScriptで、配列からオブジェクトに変換する5つの方法です。

Object.assign

配列のインデックスをkey、要素をvalueのオブジェクトを生成する。
※Object.assign:元のオブジェクト → 別のオブジェクトにコピー(変更されたオブジェクトを返す)

Object.assign({}, ["aaa", "bbb", "ccc"])
// { 0: "aaa", 1: "bbb", 2: "ccc" }


// 参)オブジェクトのコピー
const target = { a: 1, b: 2 }
const newObg = Object.assign(target, { b: 4, c: 5 })
console.log(target)  // { a: 1, b: 4, c: 5 }
console.log(newObg === target)  // true

// 参)オブジェクトの結合
const obj1 = { a: 1 }
const obj2 = Object.assign(obj1, { b: 2, c: 3 }, { d: 4 })
console.log(obj1)   // { a: 1, b: 2, c: 3, d: 4 }
console.log(obj2)   // { a: 1, b: 2, c: 3, d: 4 }

スプレッド構文

{...["aaa", "bbb", "ccc"]}
// { 0: "aaa", 1: "bbb", 2: "ccc" }

forEach

keyを指定できる。

let obj = {}
["aaa", "bbb", "ccc"].forEach((item, i) => {
  obj["キー" + i] = item
})
// { キー0: "aaa", キー1: "bbb", キー2: "ccc" }

reduce

keyを指定できる。

const newObj = ["aaa", "bbb", "ccc"].reduce(
  (obj, current, i) => ({
    ...obj,
    ["キー" + i]: current
  }), {})
// { キー0: "aaa", キー1: "bbb", キー2: "ccc" }

Object.fromEntries

[key, value] の配列 / Mapをオブジェクトに変換する。

Object.fromEntries([["aaa", "A"], ["bbb", "B"], ["ccc", "C"]])
// { aaa: "A", bbb: "B", ccc: "C" }

// Mapの場合
const map = new Map([["aaa", "A"], ["bbb", "B"], ["ccc", "C"]])
Object.fromEntries(map)
// { aaa: "A", bbb: "B", ccc: "C" }