Преобразовать числовое значение в строку, заполненную символом в JavaScript - PullRequest
1 голос
/ 10 февраля 2011

Лучший способ объяснить это с помощью примеров.

Допустим, у меня есть целое число 5. Я подключаю его к функции, и он возвращает символ пробела ("") 5 раз в одной переменной, например "".

У меня есть целое число 3. Я подключаю его к функции, и вывод будет "" (3 пробела).

Надеюсь, вы поняли. Каков наилучший способ сделать это. Я чувствую, что есть действительно простой способ сделать это в JavaScript, с циклами или без, которые мне не хватает. Спасибо.

Ответы [ 6 ]

4 голосов
/ 10 февраля 2011
function nSpaces(n) {
    var s = '';
    while (n > 0 && n--) { s += ' '; }
    return s;
}

А потом ...

var str = nSpaces(5); 

Для получения дополнительной информации об обратном цикле во время цикла и цикле, в общем, читайте здесь: http://james.padolsey.com/javascript/looping-in-javascript/

3 голосов
/ 10 февраля 2011
function repeatCh( ch, num ) {    
  return new Array( num + 1 ).join( ch );
}
2 голосов
/ 10 февраля 2011
function spaces(size) {
    for(var output = ""; size > 0; size--) output += " ";
    return output;
}

Укороченная версия:)

function spaces(n) {
    for(var s="";n--;s+=" "){}return s;
}
1 голос
/ 10 февраля 2011

Вот способ, который не включает циклы:

function getSpaces(n) {
    return new Array(n + 1).join(" ");
}

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

function getSpaces(n) {
    return "                 ".substr(-n);
}
1 голос
/ 10 февраля 2011

Или всегда есть версия массива:

function spaces(n) {
    var a = [ ];
    for(var i = 0; i < n; ++i)
        a.push(' ');
    return a.join('');
}

Основная идея - создать список из n пробелов (a.push(' ')), а затем соединить их все вместе воднажды в конце (a.join('')).

AFAIK, конкатенация строк (например, s += ' ') медленная в некоторых версиях IE, а подход с массивами быстрее.ОТО, это действительно не должно иметь большого значения в этом случае, поэтому вы должны придерживаться любого более ясного подхода.

1 голос
/ 10 февраля 2011

Есть более быстрые способы сделать это, но это то же самое, что вы сделали бы на любом другом процедурном языке. Обратите внимание, что если вы вставите это непосредственно в страницу, она все равно будет отображаться только как один пробел.

function gimmeSpaces(count){
   var returnValue = '';
     for (int i = 0;i<count;i++){ returnvalue += " ";}
   return returnValue;
}
...