簡體   English   中英

具有類型檢查的array.every()不能始終如一地工作

[英]array.every() with type checking doesn’t work consistently

我正在嘗試將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作為第一項會影響結果嗎? 有沒有其他方法可以達到相同的結果

出現意外結果的原因是您登錄的位置錯誤。

如果Array#every()所有元素都滿足您提供的謂詞(回調),則Array#every()方法將返回true。 但是,對於您的代碼,謂詞將返回console.log的結果(未定義)。 這意味着數組中的“每個”項都返回未定義,這反過來意味着在兩種情況下, every()的結果均為false。

需要注意的是,在評估表達式console.log(typeof val ==="number") ,控制台將輸出truefalse ,因此請注意不要將此日志記錄與every()的結果混淆。

要解決這些預期的結果,請嘗試從.every()回調中刪除對console.log調用,而是像這樣記錄every()的結果:

 console.log('Expect false for mix of value types:', [2, "text", 2].every(val => (typeof val ==="number")) ); console.log('Expect false for mix of value types:', ["two", "text", 2].every(val => (typeof val ==="number")) ); console.log('Expect true for all numbers:', [1, 123, 2].every(val => (typeof val ==="number")) ); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM