Если бы вы составили себе труд ознакомиться с
описанием метода filter, то знали бы, что он
создаёт новый массив со всеми значениями, для которых функция callback
вернула значение, которое может быть приведено к true
В первом случае вы возвращаете
true
, если элемент массива является числом, то есть, в результирующий массив попадают только числа, и неважно, каковы их значения. Во втором случае вы возвращаете сам элемент, если он является числом, а нули, они да - имеют своим булевым эквивалентом
false
, поэтому и отбрасываются.