【问题标题】:Having issues converting string to int using parseInt() function使用 parseInt() 函数将字符串转换为 int 时出现问题
【发布时间】:2018-11-21 03:25:19
【问题描述】:
function largestNumber(n) {
  let output = "";
  var toInt = parseInt(output);
  for (let i = 1; i <= n; i++){
    output = output + "9";
  }
  return output;
};

我不知道如何让它返回一个整数。我一直得到空值,或者没有输出。我试过了

 return output.toInt;

 var toInt = output.parseInt();
 var toInt = output.parseInt(output);
 var toInt = output.parseInt("output");
 var toInt = parseInt(output);
 var toInt = parseInt(output,10);

还有其他一些我现在不记得的各种想法 xD。 非常感谢您的帮助!

编辑

感谢帮助我发现我的代码中的问题是

var toInt = parseInt(output); 

需要在循环之后再调用

return toInt;

但是,Barmar(我希望我的名字拼写正确)有一个更清洁有效的解决方案。

【问题讨论】:

  • 你为什么要let output = "";
  • toInt 是基于解析来自output 的整数时,toInt 怎么可能是除undefined 之外的任何东西,而您总是在解析之前将其初始化为""
  • 你总是在解析一个空字符串
  • 如果要将空字符串转换为0,则应使用Number(output)
  • 听起来你要找的是return parseInt(output);

标签: javascript string loops int parseint


【解决方案1】:

Javascript 语句按照它们在函数中的写入顺序执行。所以你需要在完成所有连接之后调用parseInt(),而不是之前。

function largestNumber(n) {
  let output = "";
  for (let i = 1; i <= n; i++){
    output = output + "9";
  }
  var toInt = parseInt(output);
  return toInt;
};

虽然首先使用字符串并不是一个很好的理由,但您可以通过算术来完成这一切:

function largestNumber(n) {
  result = 0;
  for (let i = 1; i <= n; i++) {
    result = result * 10 + 9;
  }
  return result;
}

console.log(largestNumber(5));

或者更简单:

function largestNumber(n) {
  return Math.pow(10, n) - 1;
}

console.log(largestNumber(5));
console.log(largestNumber(15));

【讨论】:

  • 感谢您的帮助,并抽出宝贵的时间! :)
【解决方案2】:

您当前的代码总是尝试解析来自output 的整数,但您总是在解析之前将output 初始化为一个空字符串,因此您不会得到int。

您需要等到output 达到其最终值后才能使用parseInt()

function largestNumber(n) {
  let output = "";
  for (let i = 1; i <= n; i++){
    output = output + "9";
  }
  return parseInt(output);
}

console.log(largestNumber(5));
console.log(largestNumber(15));

但实际上,这可以根据您当前的逻辑以更简单的方式完成:

function largestNumber(n) {
  return parseInt("9".repeat(n));
}

console.log(largestNumber(5));
console.log(largestNumber(15));

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多