求大家帮忙看看代码的问题
function string2int(s) {var arr = [];
for (let x of s) {
arr.push(x);
}
arr.map(function (x) {return x*1;});
var result = arr.reduce(function (x, y) {return x*10 + y;});
alert(result);
}
string2int('123456');
function string2int(s) {
var arr = [];
for (let x of s) {
arr.push(x*1);
}
var result = arr.reduce(function (x, y) {return x*10 + y;});
alert(result);
}
string2int('123456');
两段代码的目的都是为了将由数字组成的字符串转换成int,思路是先用一个forof循环将字符串拆解成若干单个字符并放入数组arr,然后用各个字符乘1将arr内的字符转换成int,再调用reduce配合函数将其转换成最终结果。思路都是一样的,可是只有第二段代码可以正常工作,第一段代码输入123456返回的结果为10203040506,经调试后发现第一段代码在执行完arr.map那一行之后数组内的元素仍为字符,并没有转化成int,这是为什么呢?而且既然数组里的元素还是字符串,最后reduce执行后又是怎么得到10203040506的结果的呢?求大佬解答。 window.parseInt("123") === 123// true 本帖最后由 Python_KONG 于 2023-4-8 11:49 编辑
function string2int(s) {
var arr = [];
for (let x of s) {
// 筛选的时候进行转换
arr.push(parseInt(x));
}
// 此时输出的类型是number
console.log(typeof arr);
var result = arr.reduce(function (x, y) {
return x * 10 + y;
});
alert(result);
}
string2int('123456');
页:
[1]