Challenge Bonfire: Falsy Bouncer tem um problema.
O agente do usuário é: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36
.
As instruções para Falsy Bouncer indicam que um valor Falsy é de vários tipos, incluindo NaN .
O primeiro teste requer que o bouncer de chamada de função [7, "ate", 9]
no entanto, observe que a string "ate" é NaN, portanto, não deve ser incluída na matriz resultante.
Portanto, parece que não há como passar no teste 1 e no teste 3 com o mesmo bloco de código, pois são respostas mutuamente exclusivas.
Meu 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, ""]);
Peço desculpas antecipadamente se eu não entendi algo aqui.
NaN
é um valor real que uma variável pode ter e é falsey. "ate"
não é um número e isNan("ate")
retornará verdadeiro, mas o valor "ate"
não é falsey, apenas o valor específico de NaN
é falsey. A beleza (e fonte de bug ocasional) dos valores falsey é que você não precisa procurá-los explicitamente como o seu código faz, porque sempre que um valor booleano é necessário, o tipo Javascript os força a um valor booleano false. Isso significa que o código para a função de filtro pode ser simplesmente este:
arr = arr.filter(function(val){
return val;
});
Obrigado e feliz codificação!
E, tecnicamente, você pode usar a função Boolean
para fazer isso por você, então o problema pode ser resolvido:
return arr.filter(Boolean)
, uma vez que o booleano pega valores verdadeiros / falsos e retorna verdadeiro ou falso.
Comentários muito úteis
E, tecnicamente, você pode usar a função
Boolean
para fazer isso por você, então o problema pode ser resolvido:return arr.filter(Boolean)
, uma vez que o booleano pega valores verdadeiros / falsos e retorna verdadeiro ou falso.