Estaba buscando escribir una función de "todo o nada" sobre una matriz. Un enfoque es, por supuesto, aprovechar Array.prototype.every y hacer algo como
function allOrNothing(arr, f, fInv) { return arr.every(f) || arr.every(fInv); } donde f y fInv son funciones indicadoras, y fInv es una función "inversa" de f . Por ejemplo, si f = (x) => x != null , entonces fInv = (x) => x == null .
Esto me lleva a pensar: ¿es posible obtener la función fInv de f ?
Esta función, dada una función f como entrada, devuelve su inversa booleana:
let invert = (f) => (x) => !f(x)
p.ej
let invert = (f) => (x) => !f(x) let eq_five = (x) => x == 5 let neq_five = invert(eq_five) console.log(eq_five(5)) // true console.log(neq_five(5)) // false