lodash 库中的模拟 Ramda.pathOr

Analog Ramda.pathOr in lodash library

lodash 库中的方法 equal ramda.pathOr 是什么?

R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2
R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A"

如何编写此 lodash 语法?

您可以使用 _.get 并交出对象、路径和可选的默认值。

var value = _.get({ a: { b: 2 } }, ['a', 'b'], 'N/A');

console.log(value);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

根据 Nina 的回答,使用 lodash 的 get 的替代方法是,lodash/fp 中的 getOr 函数具有类似于 Ramda 的参数顺序和柯里化:

const {getOr} = require('lodash/fp');
getOr('N/A', ['a', 'b'], { a: { b: 2 } } );   // 2
getOr('N/A', ['a', 'b'])({ c: { b: 2 } } );   // 'N/A'

参见https://github.com/lodash/lodash/wiki/FP-Guide, or for an example the answer at