Можно всегда делать
('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()
. Это только работает с переменными. Но затем, если это не переменная, Вы будете всегда знать заранее, из какого количества цифр число состоит.
Сделайте функцию, которую можно снова использовать:
function minTwoDigits(n) {
return (n < 10 ? '0' : '') + n;
}
Затем использование это в каждой части координат:
c += minTwoDigits(deg) + "° ";
и так далее.
Можно всегда делать
('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.
Можно записать родовую функцию, чтобы сделать это...
var numberFormat = function(number, width) {
return new Array(+width + 1 - (number + '').length).join('0') + number;
}
Тот путь, это не проблема для контакта с любым произвольно ширины.
if(myNumber.toString().length < 2)
myNumber= "0"+myNumber;
или:
return (myNumber.toString().length < 2) ? "0"+myNumber : myNumber;
Я скучал и играющий вокруг JSPerf, пытающегося разбить в настоящее время выбираемый ответ, предварительно ожидающий нуль независимо от того, что и использование slice(-2)
. Это - умный подход, но производительность становится намного хуже, как строка становится длиннее.
Для чисел обнуляют к десять (одна и две символьных строки), я смог биться приблизительно на десять процентов, и самый быстрый подход был намного лучше при контакте с более длинными строками при помощи charAt
, таким образом, он не должен пересекать целую строку.
Это следует, не завершен столь же простой как slice(-2)
, но на 86%-89% быстрее при использовании через главным образом 3 числа цифры (3 символьных строки).
var prepended = ( 1 === string.length && string.charAt( 0 ) !== "0" ) ? '0' + string : string;
Надежда, эта справка:
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;
}
$('#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;
}
Единственная замена регулярного выражения должна сделать это:
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);
шоу ожидаемый вывод.
Вот функция Genaric для, добавляет любое количество начальных нулей для того, чтобы сделать любой размер числовой строки.
function add_zero(your_number, length) {
var num = '' + your_number;
while (num.length < length) {
num = '0' + num;
}
return num;
}