Javascript 在不删除前导零的情况下递增一个数字jquery

Javascript 在不删除前导零的情况下递增一个数字jquery,javascript,jquery,html,Javascript,Jquery,Html,我从数据库中获取一个值,并将其重新用作一个数字。这个数字的前导零仅限于4位,这意味着格式是0001或0010或0100或1000当我将1添加到此数字时,前导零已按我添加的方式消失例如 var databasevalue = 0000; var incrementvalue = parseInt(databasevalue) + parseInt(1); 数字没有前导零;这是一个字符串的东西 如果从数据库获取的值是字符串,则需要执行以下操作: 了解它的长度 使用parseInt(字符串,10)

我从数据库中获取一个值,并将其重新用作一个数字。这个数字的前导零仅限于4位,这意味着格式是
0001
0010
0100
1000
当我将1添加到此数字时,前导零已按我添加的方式消失例如

var databasevalue = 0000;
var incrementvalue = parseInt(databasevalue) + parseInt(1); 
数字没有前导零;这是一个字符串的东西

如果从数据库获取的值是字符串,则需要执行以下操作:

  • 了解它的长度

  • 使用
    parseInt(字符串,10)
    以基数10解析它(在某些引擎上,前导零使它认为应该使用基数8)

  • 添加一个(你永远不需要对实际数字使用
    parseInt
    ,所以它只是
    +1
    而不是
    +parseInt(1)

  • 将其转换为字符串

  • 将零添加到循环中字符串的开头,直到它与原始字符串一样长


  • 没有内置的填充函数可以为您完成#5,您必须编写一个填充函数或执行类似于
    theString=“00000000000000000000000”.substr(theString.length-desiredLength)+字符串
    (确保初始字符串有足够的零来覆盖您想要覆盖的内容)。

    这里是一个可以使用的函数。min_size是字符串的长度,因此在您的示例中,“0000”min_size是4。数据库值从0开始。函数将数字转换为字符串,并检查字符串的长度。然后添加前导零,直到达到最小值。console.log显示以下第一个数字“0001”。这里很容易改变前导零的数量

    var min_size = 4;
    var start_value = 0;
    
    function leading_zero (num) {
        var new_num = num.toString();
        for (var i = new_num.length; i < min_size; i++) {
            new_num = '0' + new_num;
        }
        return new_num;
    }
    
    console.log(leading_zero(start_value + 1));
    
    var min_size=4;
    var起始值=0;
    函数前导零(num){
    var new_num=num.toString();
    对于(变量i=新的数值长度;i
    我今天创建了一个函数,您可以使用它

    function incrementLeadingZeroNumber(leadingZeroString, amountToIncrement){
      var amountOfZerosToAdd = leadingZeroString.length;
      var stringToNumber = (+leadingZeroString);
      var zerosToAdd = new Array(amountOfZerosToAdd + 1).join( '0' );
    
      var zerosAndNewNumber = zerosToAdd + ( stringToNumber + amountToIncrement )
      var amountToSlice = (-1 * amountOfZerosToAdd)
      var newString = zerosAndNewNumber.slice(amountToSlice)
      return newString
    }
    
    //example usage
    var incrementedNumber = incrementLeadingZeroNumber('0030', -10)
    

    这可能会有帮助:问题是,例如9,前导零是3,如果我加1,它将是10,如果我加上原始的前导零,我将有5位数字,这不是我想要的。我理解您的解决方案的方式是获得原始零,然后将其添加到递增的值中。如果需要,请更正我wrong@HogRider:不,您记得(在#1)中,
    “0009”
    是四位数,然后将其转换为一个数字,添加一个,将其转换为字符串(
    “10”
    ),然后在第5步中,在开始处添加所需数量的零,使其再次变为四位数——在本例中,
    string.length-desired length
    将为
    -2
    ,因此您将得到
    “000000000000000000000000000000”。substr(-2)+string
    ,它将为您提供
    “0010”
    。这不是bug吗?它很简单,我得到了我想要的want@HogRider:请记住,如果最终得到的值很奇怪,那是因为JavaScript引擎将数字视为八进制(以8为基数),而不是以10为基数。如果您使用的是最新版本,并且您使用的是严格模式,那么这应该不是问题;如果您使用的是旧的或松散模式,则可能是。
    function incrementLeadingZeroNumber(leadingZeroString, amountToIncrement){
      var amountOfZerosToAdd = leadingZeroString.length;
      var stringToNumber = (+leadingZeroString);
      var zerosToAdd = new Array(amountOfZerosToAdd + 1).join( '0' );
    
      var zerosAndNewNumber = zerosToAdd + ( stringToNumber + amountToIncrement )
      var amountToSlice = (-1 * amountOfZerosToAdd)
      var newString = zerosAndNewNumber.slice(amountToSlice)
      return newString
    }
    
    //example usage
    var incrementedNumber = incrementLeadingZeroNumber('0030', -10)