Возникли проблемы с преобразованием строки в int с помощью функции parseInt () - PullRequest
0 голосов
/ 11 июня 2018
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;

Однако у Бармара (надеюсь, я правильно написал ваше имя) есть гораздо более эффективное решение.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Операторы 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));
0 голосов
/ 11 июня 2018

Ваш текущий код всегда пытается проанализировать целое число из 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));
...