ore88ore memo

プログラミング関連のTipsをメインに書いていきます。どなたかのお役に立てれば幸いです。

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)が優先される。