检查数组是否包含(仅)数值

use*_*134 11 javascript arrays

我有像这样的数组

var arrayVal_Int = ["21", "53", "92", "79"];   
var arrayVal_Alpha = ["John", "Christine", "Lucy"];  
var arrayVal_AlphaNumeric = ["CT504", "AP308", "NK675"];
Run Code Online (Sandbox Code Playgroud)
  • 以上arrayVal_Int应被视为(纯粹)数字.
  • arrayVal_AlphaarrayVal_AlphaNumeric应被视为字符串.

我需要在JavaScript中检查一下.

Tou*_*ffy 53

最短的解决方案,true只有在每个项目都是(可强制的)数字的情况下才会被证实:

!yourArray.some(isNaN)
Run Code Online (Sandbox Code Playgroud)


小智 9

我有类似的需求,但想验证列表是否只包含整数(即没有小数)。根据上面的答案,这是一种方法,我将其发布,以防有​​人需要类似的检查。

感谢@Touffy,您的建议。

let x = [123, 234, 345];
let y = [123, 'invalid', 345];
let z = [123, 234.5, 345];

!x.some(i => !Number.isInteger(i))  // true
!y.some(i => !Number.isInteger(i))  // false
!z.some(i => !Number.isInteger(i))  // false
Run Code Online (Sandbox Code Playgroud)

  • 你可以将其简化为“x.every(Number.isInteger)”而不是双重否定:) (3认同)
  • 顺便说一句,如果有本地 isNumber 函数,我会使用“every”。由于 isNaN 与 isNumber 相反,并且我想在不创建额外函数 `isNumber = n => !isNaN(n)` 的情况下使用它,因此我利用了 `∀|Ø()` 在逻辑上等价于 `∄|` 的事实。 ()`。但你不必使用“isInteger”来做到这一点。 (2认同)