【发布时间】:2020-05-25 10:47:48
【问题描述】:
我想将1,2,3,..9,10,11,12...24 转换为01,02,03,...09,10,11,12,...24。我尝试了这些解决方案。这些都没有解决我的目的:
- How to format numbers by prepending 0 to single-digit numbers?
- How to output numbers with leading zeros in JavaScript [duplicate]
- How can I pad a value with leading zeros?
我正在开发一个 Angular 项目,并且正在 Typescript 中进行。这是我的代码:
monthpikcer.component.ts
monthSlice() {
let monthStartingIndex = 0;
monthStartingIndex = ("0" + monthStartingIndex).slice(-2); //error
let monthEndingIndex = 24;
for(monthStartingIndex =0; monthStartingIndex < monthEndingIndex; monthStartingIndex++) {
...
}
}
但是对于monthStartingIndex = ("0" + monthStartingIndex).slice(-2) 行,我得到一个错误:
类型“字符串”不可分配给类型“数字”。
我希望它是01, 02, 03...10,11,12,13...24。请告诉我如何在不更改变量数据类型的情况下做到这一点,因为稍后我必须对它们进行一些算术运算。
【问题讨论】:
-
据我所知,大多数语言不允许数字以 0 开头,因为两种方式的算术结果都是相同的
-
不改变数据类型是不行的。
'01' ... '09'是字符串,如果你 parseInt('01') 那么你会有一个数字,console.log(01)将输出为1。您不能在单个数字前写零。 -
数字没有格式,只有一个值。不管你写
12、0xC、0.12e2还是0b1100。都是一样的值。所以用数字工作!仅在渲染它们时格式化它们。我不知道你使用的是哪个 Angular 版本,我也没有使用 Angular.io 的经验,但是在 angularjs 中你可以编写一个过滤器来完成这样的工作。 -
@Tanzeel 您可以在有或没有前导 0 的情况下进行计算,答案永远不会改变。对于表示,您可以使用字符串来做到这一点,所有答案都显示了一种或另一种方式来做到这一点
-
旁注 @ellipsis:JS 允许您编写带有前导零的数字。但它们是一个真正的问题,因为 sometimes 它们将被解释为八进制而 sometimes 被解释为十进制;和 Tanzeel 他们仍然不保留前导零,因为它只是另一种写入值的方式。
标签: javascript typescript