Lodashのdefaultsとassign
よくdefaults
とassign
がよく分からなくなるんです。
defaults
引数にはオブジェクトを2つ指定します。
最初のオブジェクトに、2つ目のプロパティを追加したものを返します。
ただし、最初のオブジェクトに存在するプロパティ以外!
var obj = { first: 1, second: 2 } console.log(_.defaults(obj, {first: 9})); // 9にはならない // -> [object Object] { // first: 1, // second: 2 // } console.log(_.defaults(obj, {third: 3})); // thirdが追加される // -> [object Object] { // first: 1, // second: 2, // third: 3 // } console.log(obj); // obj自体が更新される // -> [object Object] { // first: 1, // second: 2, // third: 3 // }
最初のオブジェクト自体が更新されるので少し注意。
assign
一方assign
は、
最初のオブジェクトに存在するプロパティ値を2つ目のプロパティ値で上書きします。
var obj = { first: 1, second: 2 } console.log(_.assign(obj, {first: 9, third:3})); // firstが上書きされて、thirdが追加される // -> [object Object] { // first: 9, // second: 2, // third: 3 // } console.log(obj); // obj自体が更新 // -> [object Object] { // first: 9, // second: 2, // third: 3 // }
もう一々検索しない。