DEV Community

Write a function that filters out all the falsy values from a given array. (Core JS)

Ajay Marathe on August 10, 2024

const removeFalsyValues = (arr) => { let truthy = [] for(let i = 0; i < arr.length; i++){ if(arr[i]) { truthy.push(a...
Collapse
 
jonrandy profile image
Jon Randy 🎖️
const removeFalsyValues = arr => arr.filter(x => x)
Enter fullscreen mode Exit fullscreen mode
Collapse
 
ajaymarathe profile image
Ajay Marathe

that's cool, I just wanted to use vanilla js to explain how to write with core vanilla.js :)

Collapse
 
jonrandy profile image
Jon Randy 🎖️

I used core vanilla JS

Thread Thread
 
ajaymarathe profile image
Ajay Marathe

yeah I mean without using in-built function.

Thread Thread
 
ajaymarathe profile image
Ajay Marathe

i wanted explain people how it actually works behind the scene like the iteration part and all.

Thread Thread
 
jonrandy profile image
Jon Randy 🎖️ • Edited

Array.push is a built-in function 🙂

Thread Thread
 
ajaymarathe profile image
Ajay Marathe

bro doens't my code explain in more details, like how its works and different approach :D

Collapse
 
miketalbot profile image
Mike Talbot ⭐

For the pedant in me, the function provided does not filter out falsy values from an array, instead it returns a new array that includes only the non-falsy values from the source array. The original array is unmodified.

A function which actually filters out the falsy values from an array would be:

     function removeFalsyValuesFromArray(array) {
          for(const i = array.length-1; i>=0; i--) {
              if(!array[i]) array.splice(i, 1);
          }
     }
Enter fullscreen mode Exit fullscreen mode
Collapse
 
ajaymarathe profile image
Ajay Marathe

cool thanks for the answer, everyone has different approach. :P

Collapse
 
asmyshlyaev177 profile image
Alex • Edited

It seems like output of ChatGPT.

And can do it way simpler

const arr = [0, 1, false, 2, "", 3, undefined, NaN, null]

const filterFalsy = (arr) => arr.filter(Boolean)
console.log(filterFalsy(arr))
Enter fullscreen mode Exit fullscreen mode

On the left, click 3 dots, and "Report abuse".

Collapse
 
ajaymarathe profile image
Ajay Marathe

Why bro, why do you think it's chatgpt output, i tried with core vanilla.js, because i wanted to. everyone has different approaches :)

Collapse
 
tarunkumarkale profile image
Tarun kale

"The return false value may indicate that I haven't run any tests."

Const check=(gettting)=>{
First.filter((ele)=>{
Ele===false })

}

Let first=[1,2,3,4,0,false ]

check(first)