Javascript中的自定义myParseInt()函数
我必须在JavaScript中开发自定义myParseInt函数,该函数将字符串作为参数,然后返回所提供参数中数据类型为number的所有整数。 这是我的密码Javascript中的自定义myParseInt()函数,javascript,arrays,numbers,Javascript,Arrays,Numbers,我必须在JavaScript中开发自定义myParseInt函数,该函数将字符串作为参数,然后返回所提供参数中数据类型为number的所有整数。 这是我的密码 'use strict'; function myParseInt (value) { let items = value.split('').map(Number); let myNumbers = []; items.forEach(function(item){ if(typeof item
'use strict';
function myParseInt (value) {
let items = value.split('').map(Number);
let myNumbers = [];
items.forEach(function(item){
if(typeof item === 'number' && !isNaN(item)) {
myNumbers.push(item);
}
});
return myNumbers.join('');
}
var result = myParseInt('sq12q12');
console.log(result, typeof result );
实际产出
1212 string
1212 number
所需输出
1212 string
1212 number
我得到了期望的值,但问题在于数据类型。我如何在不使用parseInt的情况下执行此操作
以下是代码测试的Repl会话您可以在返回之前转换:
var n = Number(myNumbers.join(''));
return n;
编辑
你可以在这里看到:
您可以在返回之前转换:
var n = Number(myNumbers.join(''));
return n;
编辑
你可以在这里看到:
应该返回一个字符串。您需要将该字符串转换为一个数字
话虽如此,您可以像这样重写您的函数:
function myParseInt(value) {
// strip all non-digit characters from string
// cast the resulting string to a number
return Number(value.replace(/\D/g, ""));
}
var result = myParseInt("sq12q12");
console.log(result, typeof result);
// 1212 number
function myParseInt( value ){
return +value.match( /-?\d+/g ).join( '' );
}
应该返回一个字符串。您需要将该字符串转换为一个数字
话虽如此,您可以像这样重写您的函数:
function myParseInt(value) {
// strip all non-digit characters from string
// cast the resulting string to a number
return Number(value.replace(/\D/g, ""));
}
var result = myParseInt("sq12q12");
console.log(result, typeof result);
// 1212 number
function myParseInt( value ){
return +value.match( /-?\d+/g ).join( '' );
}
只需执行a
return+myNumbers.join(“”)代码>只需执行a返回+myNumbers.join(“”)代码>如果您真的想自己进行字符串到整数/数字的转换,您可以这样做(但其他解决方案更简单):
如果您真的想自己进行字符串到整数/数字的转换,您可以这样做(但其他解决方案更简单):
诀窍是向后遍历字符串并获得字符的整数值。然后将字符与数字(1,10,100,…)中的当前位置相乘
要获取字符的整数值,可以减去表示ASCII表中“0”符号值的“0”字符。通过这样做,您将得到一个0-9之间的数字。如果得到的值不在0-9之间,可以直接跳过它
function parseIntCustom(toParse) {
var out = 0;
var factor = 1;
for (var X = toParse.length - 1; X >= 0; X--) {
var char = toParse.charAt(X) - '0';
if(char >= 0 && char <= 9){
out += char * factor;
factor *= 10;
}
}
return out;
}
console.log(parseIntCustom("123TEST123123"));
函数parseIntCustom(toParse){
var out=0;
var系数=1;
对于(变量X=toParse.length-1;X>=0;X--){
var char=toParse.charAt(X)-“0”;
如果(char>=0&&char,技巧是向后遍历字符串并获得字符的整数值。然后将字符与数字(1,10,100,…)中的当前位置相乘
要获取字符的整数值,您可以减去表示ASCII表中“0”符号值的“0”字符。这样,您将得到一个0-9之间的数字。如果您获取的值不在0-9之间,您可以跳过它
function parseIntCustom(toParse) {
var out = 0;
var factor = 1;
for (var X = toParse.length - 1; X >= 0; X--) {
var char = toParse.charAt(X) - '0';
if(char >= 0 && char <= 9){
out += char * factor;
factor *= 10;
}
}
return out;
}
console.log(parseIntCustom("123TEST123123"));
函数parseIntCustom(toParse){
var out=0;
var系数=1;
对于(变量X=toParse.length-1;X>=0;X--){
var char=toParse.charAt(X)-“0”;
如果(char>=0&&char您需要使用数组?,可以使用RegExp+value更快地完成。替换(/\D/g')
。使用数组也可以这样做:
var myParseInt=(值)=>+[…值].filter(Number).join(“”)
console.log(myParseInt('sq12q12'))
您需要使用数组吗?可以使用RegExp+value更快地完成。替换(/\D/g')
。使用数组也可以这样做:
var myParseInt=(值)=>+[…值].filter(Number).join(“”)
console.log(myParseInt('sq12q12'))
您可以使用正则表达式/[+-]?\d+/
匹配整数(但是,在这种情况下,前导的+
是多余的,因此可以将其缩短为/-?\d+//code>),然后可以使用多种方法将其转换为数字:
+x
x|0
x*1
parseInt(x,10)
编号(x)
y=0;x='-234';对于(x中的var i){if(0可以使用正则表达式/[+-]?\d+/
匹配整数(但是,在这种情况下,前导的+
是多余的,因此可以将其缩短为/-?\d+/
),然后可以使用多种方法将其转换为数字:
+x
x|0
x*1
parseInt(x,10)
编号(x)
y=0;x='-234';for(vari in x){if(0)使用正则表达式不是更容易吗?比如:+('sq12sq12'.replace(/[^0-9]/g',);
请看@ben使用正则表达式是一个有趣的想法。谢谢你的提示。使用正则表达式难道不更容易吗?比如:+('sq12sq12'.replace(/[^0-9]/g'))
参见@ben使用正则表达式是一个有趣的想法。谢谢你的提示。