меньше чем 10 добавляют 0 для нумерации [копируют]

62
задан 15 December 2011 в 03:11

10 ответов

Можно всегда делать

('0' + deg).slice(-2)

, См. slice() :

можно также использовать отрицательные числа для выбора из конца массива

Следовательно

('0' + 11).slice(-2) // '11'
('0' + 4).slice(-2)  // '04'

Для простоты доступа, Вы могли, конечно, извлечь его к функции или даже расшириться Number с ним:

Number.prototype.pad = function(n) {
    return new Array(n).join('0').slice((n || 2) * -1) + this;
}

, Который позволит Вам писать:

c += deg.pad() + '° '; // "04° "

вышеупомянутая функция pad принимает аргумент, указывающий длину желаемой строки. Если никакой такой аргумент не используется, это принимает значение по умолчанию к 2. Вы могли записать:

deg.pad(4) // "0045"

Примечание очевидный недостаток, что значение n не может быть выше, чем 11 как строка 0, является в настоящее время всего 10 символами долго. Этому можно было, конечно, дать техническое решение, но я не хотел представлять сложность в такой простой функции. (Если Вы выбираете в, см. ответ alex для превосходного подхода к этому).

Примечание также, что Вы не смогли бы записать 2.pad(). Это только работает с переменными. Но затем, если это не переменная, Вы будете всегда знать заранее, из какого количества цифр число состоит.

179
ответ дан 31 October 2019 в 13:06

Сделайте функцию, которую можно снова использовать:

function minTwoDigits(n) {
  return (n < 10 ? '0' : '') + n;
}

Затем использование это в каждой части координат:

c += minTwoDigits(deg) + "° ";

и так далее.

37
ответ дан 31 October 2019 в 13:06

Можно всегда делать

('0' + deg).slice(-2)

при использовании его очень часто можно расширить объектный Номер

Number.prototype.pad = function(n) {
    if (n==undefined)
        n = 2;

    return (new Array(n).join('0') + this).slice(-n);
}

deg.pad(4) // "0045"

, где можно установить любой размер клавиатуры или оставить значение по умолчанию 2.

4
ответ дан 31 October 2019 в 13:06

Можно записать родовую функцию, чтобы сделать это...

var numberFormat = function(number, width) {
    return new Array(+width + 1 - (number + '').length).join('0') + number;
}

jsFiddle.

Тот путь, это не проблема для контакта с любым произвольно ширины.

4
ответ дан 31 October 2019 в 13:06
if(myNumber.toString().length < 2)
   myNumber= "0"+myNumber;

или:

return (myNumber.toString().length < 2) ? "0"+myNumber : myNumber;
3
ответ дан 31 October 2019 в 13:06

Я скучал и играющий вокруг JSPerf, пытающегося разбить в настоящее время выбираемый ответ, предварительно ожидающий нуль независимо от того, что и использование slice(-2). Это - умный подход, но производительность становится намного хуже, как строка становится длиннее.

Для чисел обнуляют к десять (одна и две символьных строки), я смог биться приблизительно на десять процентов, и самый быстрый подход был намного лучше при контакте с более длинными строками при помощи charAt, таким образом, он не должен пересекать целую строку.

Это следует, не завершен столь же простой как slice(-2), но на 86%-89% быстрее при использовании через главным образом 3 числа цифры (3 символьных строки).

var prepended = ( 1 === string.length && string.charAt( 0 ) !== "0" ) ? '0' + string : string;
1
ответ дан 31 October 2019 в 13:06

Надежда, эта справка:

Number.prototype.zeroFill= function (n) {
    var isNegative = this < 0;
    var number = isNegative ? -1 * this : this;
    for (var i = number.toString().length; i < n; i++) {
        number = '0' + number;
    }
    return (isNegative ? '-' : '') + number;
}
1
ответ дан 31 October 2019 в 13:06
$('#detect').html( toGeo(apX, screenX)  + latT +', '+ toGeo(apY, screenY) + lonT  );

function toGeo(d, max) {
   var c = '';

   var r = d/max * 180;
   var deg = Math.floor(r);
   if(deg < 10) deg = '0' + deg;
   c += deg + "° ";

   r = (r - deg) * 60;
   var min = Math.floor(r);
   if(min < 10) min = '0' + min;
   c += min + "′ ";

   r = (r - min) * 60;
   var sec = Math.floor(r);
   if(sec < 10) sec = '0' + sec;
   c += sec + "″";

   return c;
}
0
ответ дан 31 October 2019 в 13:06

Единственная замена регулярного выражения должна сделать это:

var stringWithSmallIntegers = "4° 7′ 34″W, 168° 1′ 23″N";

var paddedString = stringWithSmallIntegers.replace(
    /\d+/g,
    function pad(digits) {
        return digits.length === 1 ? '0' + digits : digits;
    });

alert(paddedString);

шоу ожидаемый вывод.

0
ответ дан 31 October 2019 в 13:06

Вот функция Genaric для, добавляет любое количество начальных нулей для того, чтобы сделать любой размер числовой строки.

function add_zero(your_number, length) {
    var num = '' + your_number;
    while (num.length < length) {
        num = '0' + num;
    }
    return num;
}
0
ответ дан 31 October 2019 в 13:06

Другие вопросы по тегам:

Похожие вопросы: