使用Lodash进行第一个truthy函数结果分配

时间:2018-06-03 10:45:00

标签: javascript node.js functional-programming lodash

JS lodash

世界的背景

目前我正在尝试轻松实现多个OR语句分配的模拟。 通常我们会这样做:

let myOption = argumentAssigned || tryToGetFromOtherSource('sourceA') || tryToGetFromOtherSource('sourceB');

为了成功,我希望有类似的东西:

let myOption = _.X(
    argumentAssigned,
    _.partial(tryToGetFromOtherSource, 'sourceA'),
    _.partial(tryToGetFromOtherSource, 'sourceB') );

当然,如果以前带来真正的结果,则不执行其他功能。

1 个答案:

答案 0 :(得分:1)

我不知道它是否在lodash中,但您可以自己编写此功能。我选择传递一个论点;如果函数没有参数,那么懒惰评估它们似乎没有意义(因为它们要么是不纯的,要么只是常量)。

const firstTruthy = ([f, ...fs], x) =>
  f ? f(x) || firstTruthy(fs, x) : null;


// Example app
const repo1 = k => ({ "a": 1 })[k];
const repo2 = k => ({ "b": 2 })[k];

const getKey = k => firstTruthy([repo1, repo2], k);

console.log(getKey("a"));
console.log(getKey("b"));
console.log(getKey("c"));