使用parseInt()函数将字符串转换为int时出现问题

时间:2018-06-11 19:57:21

标签: javascript string loops int parseint

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

我不知道如何让它返回一个整数。我一直都是null,或者没有输出。我试过了

 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;

然而,巴马尔(我希望我的名字拼写正确)有一个更清洁有效的解决方案。

2 个答案:

答案 0 :(得分:0)

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

在使用output之前,您需要等到parseInt()构建到最终值。

&#13;
&#13;
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));
&#13;
&#13;
&#13;

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

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

console.log(largestNumber(5));
console.log(largestNumber(15));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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));