JavaScript string and number conversion

JavascriptStringNumbers

Javascript Problem Overview


How can I do the following in JavaScript?

  1. Concatenate "1", "2", "3" into "123"

  2. Convert "123" into 123

  3. Add 123 + 100 = 223

  4. Covert 223 into "223"

Javascript Solutions


Solution 1 - Javascript

You want to become familiar with parseInt() and toString().

And useful in your toolkit will be to look at a variable to find out what type it is—typeof:

<script type="text/javascript">
	/**
	 * print out the value and the type of the variable passed in
	 */

	function printWithType(val) {
		document.write('<pre>');
		document.write(val);
		document.write(' ');
		document.writeln(typeof val);
		document.write('</pre>');
	}

	var a = "1", b = "2", c = "3", result;

	// Step (1) Concatenate "1", "2", "3" into "123"
	// - concatenation operator is just "+", as long
	//   as all the items are strings, this works
	result = a + b + c;
	printWithType(result); //123 string

	// - If they were not strings you could do
	result = a.toString() + b.toString() + c.toString();
	printWithType(result); // 123 string

	// Step (2) Convert "123" into 123
	result = parseInt(result,10);
	printWithType(result); // 123 number

	// Step (3) Add 123 + 100 = 223
	result = result + 100;
	printWithType(result); // 223 number

	// Step (4) Convert 223 into "223"
	result = result.toString(); //
	printWithType(result); // 223 string

	// If you concatenate a number with a 
	// blank string, you get a string    
	result = result + "";
	printWithType(result); //223 string
</script>

Solution 2 - Javascript

Step (1) Concatenate "1", "2", "3" into "123"

 "1" + "2" + "3"

or

 ["1", "2", "3"].join("")

The join method concatenates the items of an array into a string, putting the specified delimiter between items. In this case, the "delimiter" is an empty string ("").


Step (2) Convert "123" into 123

 parseInt("123")

Prior to ECMAScript 5, it was necessary to pass the radix for base 10: parseInt("123", 10)


Step (3) Add 123 + 100 = 223

 123 + 100


Step (4) Covert 223 into "223"

 (223).toString() 


Put It All Togther

 (parseInt("1" + "2" + "3") + 100).toString()

or

 (parseInt(["1", "2", "3"].join("")) + 100).toString()

Solution 3 - Javascript

r = ("1"+"2"+"3")           // step1 | build string ==> "123"
r = +r                      // step2 | to number    ==> 123
r = r+100                   // step3 | +100         ==> 223
r = ""+r                    // step4 | to string    ==> "223"

//in one line
r = ""+(+("1"+"2"+"3")+100);

Solution 4 - Javascript

These questions come up all the time due to JavaScript's typing system. People think they are getting a number when they're getting the string of a number.

Here are some things you might see that take advantage of the way JavaScript deals with strings and numbers. Personally, I wish JavaScript had used some symbol other than + for string concatenation.

Step (1) Concatenate "1", "2", "3" into "123"

result = "1" + "2" + "3";

Step (2) Convert "123" into 123

result = +"123";

Step (3) Add 123 + 100 = 223

result = 123 + 100;

Step (4) Convert 223 into "223"

result = "" + 223;

If you know WHY these work, you're less likely to get into trouble with JavaScript expressions.

Solution 5 - Javascript

You can do it like this:

// step 1 
var one = "1" + "2" + "3"; // string value "123"

// step 2
var two = parseInt(one); // integer value 123

// step 3
var three = 123 + 100; // integer value 223

// step 4
var four = three.toString(); // string value "223"

Solution 6 - Javascript

To convert a string to a number, subtract 0. To convert a number to a string, add "" (the empty string).

5 + 1 will give you 6

(5 + "") + 1 will give you "51"

("5" - 0) + 1 will give you 6

Solution 7 - Javascript

parseInt is misfeatured like scanf:

parseInt("12 monkeys", 10) is a number with value '12'
+"12 monkeys"              is a number with value 'NaN'
Number("12 monkeys")       is a number with value 'NaN'

Solution 8 - Javascript

Below is a very irritating example of how JavaScript can get you into trouble:

If you just try to use parseInt() to convert to number and then add another number to the result it will concatenate two strings.

However, you can solve the problem by placing the sum expression in parentheses as shown in the example below.

Result: Their age sum is: 98; Their age sum is NOT: 5048

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

var myFather = new Person("John", "Doe", "50", "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

document.getElementById("demo").innerHTML = "Their age sum is: "+
 (parseInt(myFather.age)+myMother.age)+"; Their age sum is NOT: " +
 parseInt(myFather.age)+myMother.age; 
</script>

</body>
</html>

Solution 9 - Javascript

Simplest is when you want to make a integer a string do

var a,b, c;
a = 1;
b = a.toString(); // This will give you string

Now, from the variable b which is of type string we can get the integer

c = b *1; //This will give you integer value of number :-)

If you want to check above is a number. If you are not sure if b contains integer then you can use

if(isNaN(c*1)) {
  //NOt a number
}
else //number

Solution 10 - Javascript

We can do this by using unary plus operator to convert them to numbers first and simply add. see below:-

var a = "4";
var b = "7";
var sum = +a + +b; 

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser366312View Question on Stackoverflow
Solution 1 - JavascriptartlungView Answer on Stackoverflow
Solution 2 - JavascriptPatrick McElhaneyView Answer on Stackoverflow
Solution 3 - JavascriptcesarlView Answer on Stackoverflow
Solution 4 - JavascriptNosrednaView Answer on Stackoverflow
Solution 5 - JavascriptAndrew HareView Answer on Stackoverflow
Solution 6 - JavascriptRobert LView Answer on Stackoverflow
Solution 7 - JavascriptxanderView Answer on Stackoverflow
Solution 8 - JavascriptjpsousaView Answer on Stackoverflow
Solution 9 - JavascriptKshitizView Answer on Stackoverflow
Solution 10 - JavascriptsinghkumarhemantView Answer on Stackoverflow