为什么在JavaScript中,Array.filter(Number)会过滤掉零?

7 浏览
0 Comments

为什么在JavaScript中,Array.filter(Number)会过滤掉零?

我试图从数组中过滤出所有非数字元素。使用typeof可以看到期望的输出。但是使用Number时,会将零过滤掉。

以下是示例(在Chrome控制台中测试):

[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(Number)
// 输出结果中零被过滤掉:
[-1, 1, 2, 3, 4]  // 零被过滤了

如果使用typeof,它不会过滤零,这是预期的。

// 代码
[-1, 0, 1, 2, 3, 4, Number(0), '', 'test'].filter(n => typeof n === 'number')
// 输出结果
[-1, 0, 1, 2, 3, 4, 0]

我的问题:

  1. “Number”和“typeof”方法之间有什么区别?
  2. Number会过滤零,但“Number”本身实际上包含零,这让我感到困惑。
0