rawFriedFish 发表于 2022-11-17 10:19:22

求大家帮忙看看代码的问题

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的结果的呢?求大佬解答。

会唱歌的锤石 发表于 2022-12-23 15:20:38

window.parseInt("123") === 123// true

Python_KONG 发表于 2023-4-8 11:48:05

本帖最后由 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]
查看完整版本: 求大家帮忙看看代码的问题