Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does JavaScript cut zeros?

I have a simple function to add zeros before numbers:

function validateString(length, str){
    var newStr = '' + str;
       for (var i = str.length; i < length; i++)
          newStr = '0' + newStr;
    return newStr;
}

What do I need to change (types of variables?) to make it works for the numbers too?

validateString(12,2);
"2" // Unexpected rezult
validateString(12,'2');
"000000000002"
like image 284
Vadym Perepeliak Avatar asked Sep 21 '26 06:09

Vadym Perepeliak


1 Answers

This is happening because you're calling str.length and not newStr.length. Number values have an undefined length.

Change:

for (var i = str.length; i < length; i++)

To:

for (var i = newStr.length; i < length; i++)

function validateString(length, str){
    var newStr = '' + str;
       for (var i = newStr.length; i < length; i++)
          newStr = '0' + newStr;
    return newStr;
}

console.log(validateString(12,2));
console.log(validateString(12,'2'));
like image 147
James Donnelly Avatar answered Sep 22 '26 20:09

James Donnelly