如何修改此代码以在任何小于 10 的数字前添加 0
$('#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);
c += deg + "° ";
r = (r - deg) * 60;
var min = Math.floor(r);
c += min + "′ ";
r = (r - min) * 60;
var sec = Math.floor(r);
c += sec + "″";
return c;
}
所以输出会从
西经 4° 7′ 34″,北纬 168° 1′ 23″
到
西经 04° 07′ 34″,北纬 168° 01′ 23″
谢谢你的时间
你总是可以做
('0' + deg).slice(-2)
参见 slice()
:
You can also use negative numbers to select from the end of an array
因此
('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's answer 以获得出色的方法)。
另请注意,您将无法编写 2.pad()
。它只适用于变量。但是,如果它不是一个变量,您总是会事先知道该数字由多少位数字组成。