Javascriptでオブジェクトを結合・マージする
Javascriptでオブジェクトを結合する方法をいくつかメモっておきます。個人的には、簡潔に書けるのでスプレッド構文がオススメ。
Object.assign
const object1 = { A: "objectA", B: "objectB" }; const object2 = { C: "objectC", D: "objectD" }; console.log(Object.assign(object1, object2)); // → {A: "objectA", B: "objectB", C: "objectC", D: "objectD"}
Object.assign()
でマージされるが、最初に指定されたオブジェクト(例だとobject1
)も変更される
ので注意が必要。
キーが重複している場合は、あとに指定されているオブジェクト(例だとobject2
)が優先される。
上記の破壊的変更を防ぐには、空のオブジェクトを指定することで回避可能。
const object1 = { A: "objectA", B: "objectB" }; const object2 = { C: "objectC", D: "objectD" }; console.log(Object.assign({}, object1, object2)); // 最初の引数に空オブジェクトを指定する // → {A: "objectA", B: "objectB", C: "objectC", D: "objectD"}
スプレッド構文
const object1 = { A: "objectA", B: "objectB" }; const object2 = { C: "objectC", D: "objectD" }; console.log({...object1, ...object2}); // → {A: "objectA", B: "objectB", C: "objectC", D: "objectD"}
指定したオブジェクトの破壊的変更はなし。キーが重複していた場合は、あとに指定されているオブジェクト(例だとobject2
)が優先される。