Вы должны создать массив функций, не вызывая их (вызов их создаст массив результатов). Теперь вы можете использовать массив с Array.find()
(чтобы получить 1-ю функцию, которая возвращает true
) или Array.find()
(чтобы получить все функции, которые возвращают true
):
const fnFalse = () => false
const fnTrue = () => true
const allFunctions = [fnFalse, fnFalse, fnFalse, fnFalse, fnFalse, fnTrue, fnFalse, fnFalse, fnFalse]
const trueFn = allFunctions.find(fn => fn())
console.log(trueFn.name, trueFn())
Вы можете сделать то же самое с массивом, который вы создали с помощью allFunctions
, используя Array.indexOf
:
const fnFalse = () => false
const fnTrue = () => true
const fns = [fnFalse, fnFalse, fnFalse, fnFalse, fnFalse, fnTrue, fnFalse, fnFalse, fnFalse]
const allFunctions = () => [fnFalse(), fnFalse(), fnFalse(), fnFalse(), fnFalse(), fnTrue(), fnFalse(), fnFalse(), fnFalse()]
const trueFn = fns[allFunctions().indexOf(true)]
console.log(trueFn.name, trueFn())