我正在尝试将Array.every()
与typeof()
一起使用,以查看至少一个元素是否具有非数字
下面是代码段
1。
[2, "text", 2].every(val => console.log(typeof val ==="number"));// returns true
2。
["two", "text", 2].every(val => console.log(typeof val ==="number")); //returns false
我期望上面的1和2返回false。我们是否知道为什么将number
作为第一项会影响结果?有没有其他方法可以达到相同的结果
答案 0 :(得分:1)
出现意外结果的原因是您在错误的位置登录。
如果数组中的所有元素都满足您提供的谓词(回调),则Array#every()
method返回true。但是,对于您的代码,谓词将返回console.log
的结果(未定义)。这意味着数组中的“每个”项都返回未定义,这反过来意味着every()
的结果在两种情况下都是假的。
需要注意的是,控制台在计算表达式true
时将打印false
或console.log(typeof val ==="number")
,因此请注意不要将此日志记录与{{1}的结果混淆}。
要解决这些预期结果,请尝试从every()
回调中删除对console.log
的调用,而像这样记录.every()
的结果:
every()