Вернуть строку из N пробелов - PullRequest
0 голосов
/ 21 июня 2020

Пытаюсь решить проблему от jshero. net. Проблема заключается в следующем:

Напишите функцию пробелов, которая принимает натуральное число n и возвращает строку из n пробелов. Пробелы (1) должны возвращать ''. Мне нужно использовать while l oop, чтобы решить эту задачу. Лучшее решение, которое я мог придумать, это:

function spaces(num) {
   let mySpaces = '';
  
   while(mySpaces === num) {
      mySpaces+= num}
   }
}

Но он возвращает следующие ошибки:

spaces(0) does not return '', but undefined.
Test-Error! Correct the error and re-run the tests!

Кто-нибудь знает, как это решить?

1 Ответ

1 голос
/ 21 июня 2020

Обязательно возвращайте результат и вычитайте из num на каждой итерации:

function spaces(num) {
  let mySpaces = '';

  while (num-- > 0)
    mySpaces += ' ';

  return mySpaces;
}

console.log(
  JSON.stringify(spaces(1)),
  '\n',
  JSON.stringify(spaces(5))
);

В конечном счете, это кажется наиболее элегантным (и производительным ) подходом:

const spaces = (n) => Array(n + 1).join(' ');
console.log(
  JSON.stringify(spaces(1)),
  '\n',
  JSON.stringify(spaces(5))
);

1,1 млн операций в секунду для Array.join по сравнению с 86k для while l oop.

РЕДАКТИРОВАТЬ

Полностью отключено на String.repeat, спасибо Даниэлю за это. Нажатие 2M операций / с :

const spaces = (n) => " ".repeat(n);

console.log(
  JSON.stringify(spaces(1)),
  '\n',
  JSON.stringify(spaces(5))
);
...