我正在尝试生成一个生成数字序列的函数,并在其前面加0。但是,它没有输出正确的数字:
const generatingNumber = (start, end) => {
let result = [];
let output = '';
for(let num = start; num <= end; num++){
if(num.toString().length === 1){
output = '000' + num.toString();
result.push(parseInt(output));
} else if (num.toString().length === 2){
output = '00' + num.toString();
result.push(parseInt(output));
} else if (num.toString() === 3){
output = '0' + num.toString();
result.push(parseInt(output));
}
result.push(num);
}
return result.join('\n');
};
console.log(generatingNumber(1, 3000));
任何想法,我在这里想念为什么不加零?
还有其他更简洁的方法吗?
这是您想要的东西
const generatingNumber = (start, end) => {
let result = [];
let output = '';
for (let num = start; num <= end; num++) {
result.push(num.toString().padStart(4, 0));
}
return result.join('\n');
};
console.log(generatingNumber(1, 10));
const generatingNumber = (start, end) => {
let result = [];
let output = '';
for (let num = start; num <= end; num++) {
if (num.toString().length === 1) {
output = '000' + num.toString();
result.push(output);
} else if (num.toString().length === 2) {
output = '00' + num.toString();
result.push(output);
} else if (num.toString().length === 3) {
output = '0' + num.toString();
result.push(output);
} else {
result.push(num);
}
}
return result.join('\n');
};
console.log(generatingNumber(1, 3000));
将产生parseInt('0001')
。 1
将删除实际编号之前的所有0,因为0001和1的整数相同。
所以您只需要将字符串推入结果。
parseInt
在解析之前从字符串中删除所有前导零。您可以更改
parseInt()
to
output = '0' + num.toString();
result.push(parseInt(output));
以及您推入结果数组的所有其他类似状态。
它将存储字符串,但是您不能存储带有前导零的数字。
您想要的不是修改value,而是修改值的presentation。
“ 00000000”和“ 0”之间没有数字差异;两者都仍为0。因此,如果您将值转换为output = '0' + num.toString();
result.push(output);
类型,则将无法显示这些前导零。
这是将数字转换为数字值的行
将其转换为数字;将其保留为字符串。number
如果要在输出中保留前导零,请not
此外,也可以根据 result.push(parseInt(output));
方法,而不是根据长度手动设置。它可以“填充”前面的那些零,以获得所需的任意位数,而不仅仅是4。