[解決済み] 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
関連
-
Vueの要素ツリーコントロールに破線を追加する説明
-
vueの補間表現とv-textディレクティブの違いについて
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] (a== 1 && a ==2 && a==3) が真に評価されることはあるのでしょうか?
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] Bowerとnpmの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] this.setStateは私が期待するように状態をマージしていません。
-
[解決済み] ES6+で2つのjavascriptオブジェクトをマージするにはどうしたらいいですか?