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" }