Vadym Perepeliak
Vadym Perepeliak

Reputation: 225

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"

Upvotes: 3

Views: 114

Answers (1)

James Donnelly
James Donnelly

Reputation: 128856

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'));

Upvotes: 7

Related Questions