I don't understand why this piece of code works can someone explain to me?
If I delete this piece of the conditional && arr[i]
the value of arr[5]
don't assume as a falsy value, but if I write that piece of code already assumes arr[5]
like a falsy value.
You can see the value of arr[5]
on the end of the function.
function bouncer(arr) {
let word = []
for (let i = 0; i < arr.length; i )
if (typeof arr[i] !== Boolean && arr[i]) {
word.push(arr[i])
}
return word;
}
console.log(bouncer([false, null, 0, NaN, undefined, ""]));
CodePudding user response:
Try this code if you want to check for falsy values
Let me tell you that falsy values don't require to be boolean!
For Example, 0 is a falsy value however typeof(0) is number ..
The reason why your code returns an empty array is the if condition, you're checking if typeof(arr[i]) !== Boolean && arr[i]
this condition will always be false since typeof returns a string and Boolean is considered as an Object/ Constructor (which isn't a string)
function bouncer(arr) {
let word = []
for (let i = 0; i < arr.length; i )
if (arr[i]) {
word.push(arr[i])
}
return word;
}
console.log(bouncer([false, null, 0, NaN, undefined, ""]));
CodePudding user response:
maybe You can do it simplier :-)
let arr = [false, null, 0, NaN, undefined, "", 111, "aaa"];
let x = arr.filter(i => (typeof i !== Boolean && i))