1. ホーム
  2. javascript

[解決済み] Lodash - .extend() / .assign() と .merge() の違い。

2022-03-19 12:14:12

質問

での ロダッシュ ライブラリについて、どなたか詳しい説明をお願いします。 マージ 拡張/割り当て .

単純な疑問だが、その答えが見つからない。

どのように解決するのですか?

その方法は以下の通りです。 extend / assign が動作します。ソースにある各プロパティについて、その値をそのままデスティネーションにコピーします。プロパティ値自体がオブジェクトである場合、そのプロパティの再帰的な走査はありません。オブジェクト全体がソースから取得され、デスティネーションにセットされることになる。

以下は、その方法です。 merge が動作します。ソースにある各プロパティについて、そのプロパティがオブジェクトそのものであるかどうかをチェックします。もしそうであれば、再帰的に下へ進み、ソースからデスティネーションへ子オブジェクトのプロパティをマッピングしようとします。つまり、本質的には、ソースからデスティネーションへオブジェクトの階層をマージするのです。一方 extend / assign これは、ソースからデスティネーションへのプロパティの単純な1レベルのコピーです。

これを明確にするための簡単なJSBinはこちらです。 http://jsbin.com/uXaqIMa/2/edit?js,console

この例では、配列も含めて、より精巧なバージョンを示しています。 http://jsbin.com/uXaqIMa/1/edit?js,console