1. ホーム
  2. javascript

[解決済み] ES6+で2つのjavascriptオブジェクトをマージするにはどうしたらいいですか?

2022-04-26 03:45:03

質問

いつもこのようなコードを書かなければならないことにうんざりしています。

function shallowExtend(obj1,obj2){
  var key;
  for ( key in obj2 ) {
    if ( obj2.hasOwnProperty(key) === false )  continue;
    obj1[key] = obj2[key]
  }
}

あるいは、自分でコードを書きたくなければ、すでにそれを行っているライブラリを実装すればいい。きっとこれに関してはES6+が助けに来てくれるだろう。 Object.prototype.extend(obj2...) または Object.extend(obj1,obj2...)

では、ES6+はそのような機能を提供しているのでしょうか?もし提供されていないなら、そのような機能は計画されているのでしょうか?もし予定されていないのであれば、それはなぜですか?

解決方法は?

Object.assignを使用することで、ES6で浅いマージ/拡張/アサインができるようになります。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

構文です。

Object.assign() 目標 , 源流 );

どこ ...源 はソースオブジェクトを表します。

var obj1 = {name: 'Daisy', age: 30};
var obj2 = {name: 'Casey'};

Object.assign(obj1, obj2);

console.log(obj1.name === 'Casey' && obj1.age === 30);
// true