Takže mám vytvořit funkci, která má dva vstupy: pole Booleovské funkce a hodnota, běh přes každé z těchto funkcí. Mám vrátí Boolean hodnotu označující, zda je nebo není všechny funkce vrátí true. Pokud alespoň jedna z funkcí vrací false, pak snížit by se měla vrátit hodnotu false.
Problém mám, je, že i když jeden z funkcí vyhodnocen jako false a akumulátor je nastavena na false, pokud tam je další funkce v poli po tom, který vyústí v pravou hodnotu, pak to jen vrací hodnotu true, i když předchozí funkce, bylo falešné.
Něco jsem četl a zdá se, že tam není opravdu způsob, jak se vymanit z běžící snížení metoda.
const allClear = (funcArr, value) => {
// iterate through funcArr using reduce
return funcArr.reduce((acc, fn) => {
if (fn(value) === false) {
return false;
} else {
return true;
}
}, false)
}
a zde jsou testovací případy, které tvoří řadu funkcí, stejně jako dvou volání funkce...
const isOdd = num => num % 2 === 1;
const isPositive = num => num > 0;
const multipleOfFive = num => num % 5 === 0;
const numFnArr = [isOdd, isPositive, multipleOfFive];
console.log(allClear(numFnArr, 25)) // should log true
console.log(allClear(numFnArr, -25)) // should log false
Snažil jsem se poměrně málo variací moje funkce, ale bezvýsledně. Hned jak jsem akumulátoru na hodnotu false, bude nastaven zpět na hodnotu pravda další funkce v poli (když už mluvíme o druhé volání funkce s -25) a nemohu přijít na to, jak se vymanit z omezení a return false jednou jsem najít falešný výsledek z provozu prostřednictvím funkce!
Děkuji za jakékoliv tipy nebo pomoc!