lodash / fp getOr 如何工作

Luh*_*uh 1 javascript lodash

import { getOr } from 'lodash/fp';
Run Code Online (Sandbox Code Playgroud)

我想知道 getOr 是如何工作的,因为我找不到具体的文档来解释它。

Nic*_*ons 5

getOr()方法的行为方式与非功能性 lodash 库中的常规get()方法非常相似:

_.get(object, path, [defaultValue])
Run Code Online (Sandbox Code Playgroud)

以上是get在常规 lodash 中的用法。要使用它,您需要提供object要从中获取值的对象、对象path的值和一个可选值(defaultValue如果路径不存在于对象中)。

如何使用getOr()

以下是 的用法_.getOr()

_.getOr(defaultValue)(path)(object)
Run Code Online (Sandbox Code Playgroud)

_.get()与常规 lodash非常相似,上面返回位于pathin处的值object,或者defaultValue如果路径不存在于对象中。

您可能已经注意到,您必须提供a defaultValueabove 才能传递对象和路径参数。如果您确定您的路径将始终指向一个值(并且不需要默认值),那么这就是该_.get(path)(object)方法的用途。

用法示例:

_.get(object, path, [defaultValue])
Run Code Online (Sandbox Code Playgroud)
_.getOr(defaultValue)(path)(object)
Run Code Online (Sandbox Code Playgroud)

这个怎么运作:

的定义_.getOr()包装了常规的 lodash_.get()定义,除了它是柯里化的,参数被翻转,并且必须提供默认值(因为如果你没有提供默认值,你将无法提供其他柯里化的参数价值)。使用 lodash,你可以_.getOr像这样实现自己:

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"
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)"></script>
Run Code Online (Sandbox Code Playgroud)