Pattern with auto increment in javascript – JavaScript – SitePoint Forums

0

I am trying to create the pattern where the number will auto increment with at least one prefix with zero when the number is finished. for example the initial value will be ABCD0001 when i add 1 it will be ABCD0002 so on, it will work continuously like ABCD9999. now the figure is finished, it will be converted to ABCD010000 means if the number exceeds the number zero automatically add like here we can see ABCD010000 I am trying to create this function but it strips all zeros from the code. please help me to create this function which would give expected output in javascript. I try to create but it doesn’t work as below.


It’s a bit inconsistent that you have ABCD0001, ABCD0002, then jump to ABCD10000, ABCD10001. So if you increase the number of digits, you should start with ABCD1, ABCD2, etc.

But here is a solution:

let id = "ABCD9991";

for(let i = 0; i < 100; i++)
{
    let strings = id.replace(/[0-9]/g, '');
    let digits = (parseInt(id.replace(/[^0-9]/g, '')) + 1).toString();
    if(digits.length < 4)
        digits = ("000"+digits)	.substr(-4);
    id = strings + digits;
    console.log(id);
}



1 like

Welcome to the forum @wawane7256 :slight_smile:

my attempt

First a function to get the required padding length of a given string

// strings have a length property '22'.length === 2
function getPadLength ({ length }) {
  if (length < 5) return 4
  // if an odd number in length return the length + 1
  return (length % 2 === 0) ? length : length + 1
}

getPadLength('24') // 4

getPadLength('52367') // 6

getPadLength('102367') // 6

Now a function to fill with zeros

function padZeros (num) {
  const numStrg = num.toString()
  const padding = getPadLength(numStrg)

  return numStrg.padStart(padding, '0')
}

padZeros(24) // '0024'

padZeros(10235) // '010235'

padZeros(102356) // '102356'

[2, 64, 512, 1024, 32768].map(padZeros)

// ['0002', '0064', '0512', '1024', '032768']

Thank you for your reply…

function padZeros (num, mynumber) {
  const numStrg = num.toString() + mynumber;
  const padding = getPadLength(numStrg)
    return numStrg.padStart(padding, '0')
}

console.log(padZeros(‘ABCD0001’, 1)); // 0ABCD00011
expected output: ABCD0002

very nice, but it’s deprecated as NodeJs says…

What I gave you is just the numbers. I thought maybe you could figure out the rest :slight_smile:

Maybe you could split the string first. Then join next.

Sorry, this happens if you switch between PHP and JS often :slight_smile:
Use substring() instead.



2 likes

Share.

Comments are closed.