Freecodecamp: Bonfire: Falsy Bouncer - instrucciones contradictorias

Creado en 15 dic. 2015  ·  3Comentarios  ·  Fuente: freeCodeCamp/freeCodeCamp

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, ""]);

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.

Todos 3 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones