Why the string does not come out and How can I remove NaN?
false to an actual
false (a boolean), the language has rules for what it considers to be false: all of the values you are filtering out are considered false (
NaN and an empty string
To fix what you have:
NaN is not equal to anything else, not even to itself. Think of it is a value that JS has been told is a number, but when JS tries to read it, it can’t understand it. As it has no idea what it actually is, it can’t say “this unknown thing is the same as this other unknown thing”.
To check, you can simply do
arr[i] !== arr[i], ie
this value does not equal itself.
With the string, you can literally just do
arr[i] !== ''. Also you’ve misspelled
strnig. You don’t need to do
typeof, you can just check it isn’t an empty string, or isn’t
0 or isn’t
null or whatever (except for
NaN where you need to do what I suggested).
This solves it, but you don’t need to do any of this: if you read back the first paragraph I wrote, about how JS has truthy and falsely values, you just need to check if the value is truthy or falsey.
There are much more concise ways to do this, but probably the easiest to inderstand is a function called
Boolean(). If you give it a value, it converts it to true or false -
Boolean(1) returns true,
Boolean(null) returns false,
Boolean('hello') returns true and so on.