如何将字符串转换为数字而不丢失尾随零
var string1 = '02';
Number(string1); // == 2 - Default output
Number(string1); // == 02 - My requirement
我想要这个的原因是:我将一个日期作为值传递给日期 HTML 元素。格式为 yyyy-MM-dd ,月份和日期格式为两位数,如果我将日期(在我的例子中为字符串)转换为数字,则前导零将被删除。
最佳答案
你不能。 Number
是一个Number
,句点。您可以创建一个辅助对象来提供一个数字和一个数字 leftpad 方法供您使用。像这样的东西:
document.querySelector("button").addEventListener("click", setDateValueExample);
var num = XNumber(3);
var result = {
el: document.querySelector("#result"),
log(str) {
this.el.textContent += str + '\n';
}
}
// XNumber usage example
result.log('XNumber(54).lpad(1000000): ' + XNumber(54).lpad(1000000));
// Datefield value from date field formatting example
var d = new Date(document.querySelector("#somedate").value);
result.log('Date formatted: ' +
[XNumber(d.getMonth()+1).lpad(),
XNumber(d.getDate()).lpad(),
d.getFullYear()].join('-'));
// Set date field value from string example
function setDateValueExample() {
document.querySelector("#somedate").value =
document.querySelector("button").getAttribute("data-dateString")
.split("/")
.reverse()
.map(function (v) {
return XNumber(v).lpad()
})
.join('-');
}
// The actual Number helper
function XNumber(num) {
return {
num: +num,
lpad (base) {
base = base || 10;
var len = (String(base).length - String(this.num).length)+1;
return len > 0 ? new Array(len).join('0')+this.num : this.num;
}
};
}
<input type="date" id="somedate" value="2017-02-01"/> a date
<button data-dateString="2/3/2017">Set value from string "2/3/2017"</button>
<pre id="result"></pre>
关于javascript - 在javascript中将字符串转换为数字时如何保留前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975680/