[解決済み] lodash / fp getOrの仕組み
2022-02-07 01:09:46
質問事項
import { getOr } from 'lodash/fp';
getOrの仕組みを説明する具体的なドキュメントが見つからなかったので、教えて欲しいです。
どのように解決するのですか?
その
getOr()
メソッドの動作は、通常の
get()
メソッドで、機能しないlodashライブラリにあります。
_.get(object, path, [defaultValue])
上記は
get
を通常のlodashで使用します。これを使うには
object
から値を取得したい場合、その
path
を値に、そしてオプションで
defaultValue
がオブジェクト内に存在しない場合、そのパスを指定します。
使用方法
getOr()
:
の使い方は次のとおりです。
_.getOr()
:
_.getOr(defaultValue)(path)(object)
とよく似ています。
_.get()
にある値を返します。
path
で
object
または
defaultValue
がオブジェクト内に存在しない場合、そのパスを指定します。
お気づきのように
defaultValue
オブジェクトとパスの引数を渡すには、上記のようにします。もしパスが常にある値につながることが確実なら (そしてデフォルト値は必要ない)、 このように
_.get(path)(object)
というメソッドがあります。
使用例です。
const {getOr} = _;
const object = {'a': [{ 'b': { 'c': 3 } }]};
console.log(getOr("default")("a[0].b.c")(object)); // 3
console.log(getOr("default")(['a', '0', 'b', 'c'])(object)); // 3
console.log(getOr("default")("a.b.c")(object)); // "default"
<script src="https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)"></script>
どのように機能するか
の定義は以下の通りです。
_.getOr()
は、通常のロダッシュをラップする
_.get()
の定義に従います。ただし、この定義が curried であること、引数が反転していること、そしてデフォルト値を指定しなければならないことを除きます (デフォルト値を指定しなければ、他の curried 引数を指定することができないからです)。lodashを使って
_.getOr
を自分で作ることができます。
const {get, rearg, ary, curry} = _; // normal get method
const getOr = curry(rearg(ary(get), [2, 1, 0]));
const object = {'a': [{ 'b': { 'c': 3 } }]};
console.log(getOr("default")("a[0].b.c")(object)); // 3
console.log(getOr("default")(['a', '0', 'b', 'c'])(object)); // 3
console.log(getOr("default")("a.b.c")(object)); // "default"
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
関連
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
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 $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない