Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何强制parseInt在任何字符串上返回NaN?_Javascript_Type Conversion - Fatal编程技术网

Javascript 如何强制parseInt在任何字符串上返回NaN?

Javascript 如何强制parseInt在任何字符串上返回NaN?,javascript,type-conversion,Javascript,Type Conversion,例如,如果我们说: parseInt("128"); // => 128 parseInt("123a"); // => 128 again :( 工作完美无瑕 如果我们说: parseInt("a128"); // => NaN 但如果我们说: parseInt("128"); // => 128 parseInt("123a"); // => 128 again :( 是否有明确的方法只解析数字,如果参数中出现任何字母字符,它将返回NaN?这就是您期望

例如,如果我们说:

parseInt("128"); // => 128
parseInt("123a"); // => 128 again :(
工作完美无瑕

如果我们说:

parseInt("a128"); // => NaN
但如果我们说:

parseInt("128"); // => 128
parseInt("123a"); // => 128 again :(

是否有明确的方法只解析数字,如果参数中出现任何字母字符,它将返回NaN?

这就是您期望的结果

function checkIsStringNaN (str) {
  return isNaN(str) ? NaN : parseInt(str)
}

checkIsStringNaN("128") // 128
checkIsStringNaN("a128") // NaN
checkIsStringNaN("123a") // NaN

这就是你想要的吗

function checkIsStringNaN (str) {
  return isNaN(str) ? NaN : parseInt(str)
}

checkIsStringNaN("128") // 128
checkIsStringNaN("a128") // NaN
checkIsStringNaN("123a") // NaN
parseInt不能以这种方式工作,请检查

它删除前导空格和尾随空格。 如果遇到不解释为整数且不受基数支持的字符,则将忽略该字符 但是,您可以通过执行以下操作来强制它以这种方式工作

作用{ var old=parseInt; parseInt=functionx,y{ 如果!y | | y==10&&isNaN Numberx{return NaN} 返回old.applythis,参数 } }; //测试用例 console.log parseInt123; console.log parseInt123a; console.log parseInt123a,16; console.log.123 parseInt不能以这种方式工作,请检查

它删除前导空格和尾随空格。 如果遇到不解释为整数且不受基数支持的字符,则将忽略该字符 但是,您可以通过执行以下操作来强制它以这种方式工作

作用{ var old=parseInt; parseInt=functionx,y{ 如果!y | | y==10&&isNaN Numberx{return NaN} 返回old.applythis,参数 } }; //测试用例 console.log parseInt123; console.log parseInt123a; console.log parseInt123a,16;
console.log.123 您也可以自己完成该功能:

function in_array (array, key){
    var check = false;
    for(var i = 0; i < array.length; i++){
        if(key == array[i]){
            check = true;
            break;
        }
    }
    return check;
}

var allowedchars=["0","1","3","4","5","6","7","8","9"];

function checkIsStringNaN (str){
    var b = true;
    for(var i = 0, i < str.length; i++){
        if(!in_array(allowedchars, str.charAt(i))){
            b = false;
            break;
        }
    }
    if(!b) {
        return NaN;
    } else {
        return parseInt(str);
    }
}

您也可以自己完成该功能:

function in_array (array, key){
    var check = false;
    for(var i = 0; i < array.length; i++){
        if(key == array[i]){
            check = true;
            break;
        }
    }
    return check;
}

var allowedchars=["0","1","3","4","5","6","7","8","9"];

function checkIsStringNaN (str){
    var b = true;
    for(var i = 0, i < str.length; i++){
        if(!in_array(allowedchars, str.charAt(i))){
            b = false;
            break;
        }
    }
    if(!b) {
        return NaN;
    } else {
        return parseInt(str);
    }
}

对于需要处理字符串的场景,也可以使用数字函数。数字函数将对象参数转换为表示对象值的数字

//测试用例 console.log编号123; console.log编号123A;
console.log编号123 对于需要处理字符串的场景,也可以使用数字函数。数字函数将对象参数转换为表示对象值的数字

//测试用例 console.log编号123; console.log编号123A;
console.log编号123;您是否正在尝试检查字符串是否仅包含数字?是否正在尝试分析数字并不忽略字母表。如果出现一个字母字符,它将返回一个NaN。你可以用数字来代替。如果!foo.test/^\d+$/bar=NaN。是否尝试检查字符串是否仅包含数字?尝试分析数字并不忽略字母表。如果出现一个字母字符,它将返回一个NaN。你可以用数字来代替。如果!foo.test/^\d+$/bar=NaN。