Javascript-every()方法检查数组元素上的isInteger

Javascript-every()方法检查数组元素上的isInteger,javascript,arrays,Javascript,Arrays,如果一个数组包含所有整数,我想检查return true,否则检查false。我正在尝试使用每种方法 因此,如果给定“1234”,它将返回true,如果给定“123a”,它将返回false function validatePIN (pin) { pinArray = pin.split(""); if (pinArray.length === 4 || pinArray.length === 6) { if (pinArray.every(Number.

如果一个数组包含所有整数,我想检查return true,否则检查false。我正在尝试使用每种方法

因此,如果给定“1234”,它将返回true,如果给定“123a”,它将返回false

  function validatePIN (pin) {
    pinArray = pin.split("");
      if (pinArray.length === 4 || pinArray.length === 6) {
        if (pinArray.every(Number.isInteger()) === true;) {
          return true
    }};

如何将每个元素传递给isInteger以便它可以测试它?

即使您修复了语法错误并将
Number.isInteger
作为一个函数传递,这也行不通

功能错误验证pin(pin){

var pinArray=pin.split(“”;//正如注释所述,可以通过调用
pinArray.each(Number.isInteger)
而不是一次调用它(或者在函数
中提供它。each(c=>Number.isInteger(c))
将isInteger函数作为参数传递,但传递函数本身更简洁)

但是,它不太可能提供您期望的结果,因为
isInteger
检查值是否为实际整数,而不是值是否可以解析为1

这可以通过类似于
pinArray.map(parseFloat.every(Number.isInteger);

但是这样使用
!pinArray.some(isNaN)

这可以使功能:

function validatePIN (pin) {
    return (pin.length === 4 || pin.length === 6) 
        && ![...pin].some(isNaN);
}
但最后要注意的是,正则表达式用于这种类型的检查,在这里可能更可取

您的
pin.split(“”)
在您将数字(例如
1234
作为参数传递时将永远不起作用。请先转换为字符串,然后拆分
pin.toString().split(“”)

现在在
.every()
函数中,我们通过执行
+number
将字符串转换为数字

return pinArray.every(number => Number.isInteger(+number));
.every()
返回true或false

下面是一个工作示例

功能验证pin(pin){
var pinArray=pin.toString().split(“”);
if(pinArray.length==4 | | pinArray.length==6){
//返回true或false
//+number将字符串转换为数字
返回pinArray.every(number=>number.isInteger(+number));
}
//我们假设每个PIN都无效
返回false;
};
log('test1',validatePIN(1234));//true
log('test2',validatePIN('1234');//true
console.log('test3',validatePIN('123a'));//false

console.log('test4',validatePIN('0001');//true
它不会。您需要将
Number.isInteger
作为回调传递,而不是调用它。
every(Number.isInteger)
…将其更改为
pinArray.every(Number.isInteger)
如果添加
()
您正在调用函数,但没有将其作为参数提供。为什么在数字前面有+呢?(+number)它将字符串转换为数字。因为您的数组中充满了字符串元素。请考虑以下情况:
number.isInteger('1');//返回false
number.isInteger(+'1'));//返回true
它被称为
一元运算符
+
+num