Search code examples
javascriptarraystypeof

Check for falsy values on array


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


Solution

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