Challenge Bonfire: Falsy Bouncer tiene un problema.
El agente de usuario es: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36
.
Las instrucciones para Falsy Bouncer indican que un valor de Falsy es de varios tipos, incluido NaN .
La primera prueba requiere que la función llamada bouncer ([7, "comió", "", falso, 9]) devuelva [7, "comió", 9]
sin embargo, tenga en cuenta que la cadena "ate" es NaN, por lo que no debe incluirse en la matriz resultante.
Por lo tanto, parece que no hay forma de pasar la prueba 1 y la prueba 3 con el mismo bloque de código, son respuestas mutuamente excluyentes.
Mi código:
function bouncer(arr) {
arr = arr.filter(function(val){
if (val === false || val === null || val === undefined || val === "" || val === 0 || isNaN(val)) return false;
return true;
});
return arr;
}
bouncer([false, null, 0, NaN, undefined, ""]);
Disculpas de antemano si he entendido mal algo aquí.
NaN
es un valor real que puede tener una variable y es falso. "ate"
no es un número y isNan("ate")
devolverá verdadero, pero el valor "ate"
no es falso, solo el valor específico de NaN
es falso. La belleza (y la fuente de error ocasional) de los valores falsey es que no necesita buscarlos explícitamente como lo hace su código, porque siempre que se necesita un valor booleano, Javascript los convertirá en un valor booleano de falso. Lo que esto significa es que el código para su función de filtro puede ser simplemente este:
arr = arr.filter(function(val){
return val;
});
¡Gracias y feliz codificación!
Y, técnicamente, puede usar la función Boolean
para hacerlo por usted, de modo que el problema se pueda resolver:
return arr.filter(Boolean)
, ya que Boolean toma valores verdaderos / falsos y devuelve verdadero o falso.
Comentario más útil
Y, técnicamente, puede usar la función
Boolean
para hacerlo por usted, de modo que el problema se pueda resolver:return arr.filter(Boolean)
, ya que Boolean toma valores verdaderos / falsos y devuelve verdadero o falso.