在前面加零时生成数字

问题描述 投票:1回答:4

我正在尝试生成一个生成数字序列的函数,并在其前面加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));

任何想法,我在这里想念为什么不加零?

还有其他更简洁的方法吗?

javascript
4个回答
0
投票

您可以使用padStart方法。

padStart()方法用另一个字符串(如果需要,多次)填充当前字符串,直到结果字符串达到给定的长度。从当前字符串的开头开始应用填充。

padStart

0
投票

这是您想要的东西

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的整数相同。

所以您只需要将字符串推入结果。


0
投票

parseInt在解析之前从字符串中删除所有前导零。您可以更改

parseInt()

to

output = '0' + num.toString();
result.push(parseInt(output));

以及您推入结果数组的所有其他类似状态。

它将存储字符串,但是您不能存储带有前导零的数字。


0
投票

您想要的不是修改value,而是修改值的presentation

“ 00000000”和“ 0”之间没有数字差异;两者都仍为0。因此,如果您将值转换为output = '0' + num.toString(); result.push(output); 类型,则将无法显示这些前导零。

这是将数字转换为数字值的行

number

如果要在输出中保留前导零,请not

将其转换为数字;将其保留为字符串。

此外,也可以根据 result.push(parseInt(output)); 方法,而不是根据长度手动设置。它可以“填充”前面的那些零,以获得所需的任意位数,而不仅仅是4。

© www.soinside.com 2019 - 2024. All rights reserved.