Первое правдивое назначение результата функции с Lodash - PullRequest
0 голосов
/ 03 июня 2018

Контекст мира JS lodash

В настоящее время я пытаюсь с легкостью добиться аналога назначения нескольких операторов OR.Обычно мы делаем что-то вроде этого:

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

для успеха Я хотел бы иметь что-то вроде:

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

и, конечно, не выполняем дальнейшие функции, если предыдущий приносит правдивый результат.

1 Ответ

0 голосов
/ 04 июня 2018

Я не знаю, есть ли это в 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"));
...