Por que Array.filter (Number) filtra zero em JavaScript?
Estou tentando filtrar todos os elementos não numéricos de uma matriz. Podemos ver a saída desejada ao usar typeof. Mas com Number, ele filtra zero.
Aqui está o exemplo (testado no Chrome Console):
[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(Number)
// Which output with zero filtered out:
[-1, 1, 2, 3, 4] // 0 is filtered
Se usarmos typeof, ele não filtra zero, o que era esperad
// code
[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(n => typeof n === 'number')
// output
[-1, 0, 1, 2, 3, 4, 0]
Minha pergunta
Qual é a diferença entre as abordagens 'Número' e 'tipo de'?
Número filtra zero, mas o próprio 'Número' literalmente contém zero e isso me confund