Javascript添加前导零适用于while循环,但不适用于for循环

时间:2018-11-19 17:51:35

标签: javascript loops

我正在从字符串中提取数字并将其传递给函数。我想向其添加1,然后在保留前导零的同时返回字符串。我能够使用while循环而不是for循环来做到这一点。 for循环仅跳过零。

var addMoreZeros = (numStr)=> {
    let newNumStr = (parseInt(numStr)+1).toString();
    let zerosToAdd = numStr.length - newNumStr.length;
    let zeroPadStr = "";
    let i = 0;
    while (i < zerosToAdd) {
        zeroPadStr += "0";
        i++;
    }
   //This doesn't work
   //for(let i = 0; i++; i < zerosToAdd) {
   //   zeroPadStr+="0";
   //}
    return zeroPadStr + newNumStr;
}

2 个答案:

答案 0 :(得分:1)

您的for循环语法错误,应该是:

(initializer; condition; increments / decrements)

如此:

for(let i = 0; i < zerosToAdd; i++) {}

var addMoreZeros = (numStr)=> {
    let newNumStr = (parseInt(numStr)+1).toString();
    let zerosToAdd = numStr.length - newNumStr.length;
    let zeroPadStr = "";
    for(let i = 0; i < zerosToAdd; i++) {
      zeroPadStr+="0";
    }
    return zeroPadStr + newNumStr;
}
console.log(addMoreZeros("00125"))

答案 1 :(得分:0)

替代方法(而不是for / while):

var addMoreZeros = (numStr, numLength = numStr.length) => `${++numStr}`.padStart(numLength,'0');

// example of usage
console.log(addMoreZeros("124", 5));

说明++numStr将数字字符串强制转换为数字并将其递增,然后`${...}`将数字强制转换回字符串。最后padStart()添加前导零。