Javascript-every()方法检查数组元素上的isInteger
如果一个数组包含所有整数,我想检查return true,否则检查false。我正在尝试使用每种方法 因此,如果给定“1234”,它将返回true,如果给定“123a”,它将返回falseJavascript-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.
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
。