JS Datatype Conversions

Download (.odt) Download (Markdown)

String to number

[hook]

Using parseInt(string, radix) function (radix parameter is optional, 10 if not provided):

let str = "69";
let str2 = "F";
let str3 = "69 is my favorite number";
let str4 = "My favorite number is 69";
let strToBase10Num = parseInt(str); // 69
let str2ToBase10Num = parseInt(str2); // NaN (the digit F doesn't exist in base 10)
let str2ToBase16Num = parseInt(str2, 16); // 15 (because F in base 16 is 15)
let str3ToBase10Num = parseInt(str3); // 69 (it quits after it finds a non-numeric character)
let str4ToBase10Num = parseInt(str4); // NaN (the first character is non-numeric so it quits)

Using parseFloat(string) function:

let str = "3.14";
let str2 = "3.14 is PI";
let str3 = "PI is 3.14";
let strToNum = parseFloat(str); // 3.14
let str2ToNum = parseFloat(str2); // 3.14
let str3ToNum = parseFloat(str3); // NaN

Using constructor of Number object:

let str = "3.14";
let str2 = "3.14 is PI";
let str3 = "PI is 3.14";
let strToNum = Number(str); // 3.14
let str2ToNum = Number(str2); // NaN (tries to convert the whole string at the same time unlike parseInt and parseFloat)
let str3ToNum = Number(str3); // NaN

Using unary + operator:

let str = "3.14";
let str2 = "3.14 is PI";
let str3 = "PI is 3.14";
let strToNum = + str; // 3.14
let str2ToNum = + str2; // NaN (tries to convert the whole string at the same time similar to Number() constructor)
let str3ToNum = + str3; // NaN

Number to string

[hook]

Using toString() method:

let num = 69;
let numToStr = num.toString(); // "69"

String to boolean

[hook]

"true" to true and "false" to false

Using === (identity) operator:

let str = "true";
let str2 = "True";
let str3 = "false";
let strToBool = (str === "true"); // true
let str2ToBool = (str2 === "true"); // false
let str3ToBool = (str3 === "true"); // false

(parentheses are optional but improve readability)

Using test(string) method on a case sensitive regex:

let str = "true";
let str2 = "True";
let str3 = "false";
let strToBool = (/true/).test(str); // true
let str2ToBool = (/true/).test(str2); // false
let str3ToBool = (/true/).test(str3); // false

Using test(string) method on a case insensitive regex:

let str = "true";
let str2 = "True";
let str3 = "false";
let strToBool = (/true/i).test(str); // true
let str2ToBool = (/true/i).test(str2); // true
let str3ToBool = (/true/i).test(str3); // false

Truthy values to true and falsy values to false

Truthy values: any string that isn't empty (contains at least one character)

Falsy value: empty string

Using constructor of Boolean object:

let str = "true";
let str2 = "false";
let str3 = "";
let strToBool = Boolean(str); // true
let str2ToBool = Boolean(str2); // true
let str3ToBool = Boolean(str3); // false

Using double NOT operator (to invert result of single NOT operator):

let str = "true";
let str2 = "false";
let str3 = "";
let strToBool = !!str; // true
let str2ToBool = !!str2; // true
let str3ToBool = !!str3; // false

Boolean to string

[hook]

Using toString() method:

let bool = true;
let bool2 = false;
let boolToString = bool.toString(); // "true"
let bool2ToString = bool2.toString(); // "false"

Number to boolean

[hook]

Truthy values: each integer and float number except for 0

Falsy value: 0

Using constructor of Boolean object:

let num = 0;
let num2 = 3;
let num3 = -3;
let numToBool = Boolean(num); // false
let num2ToBool = Boolean(num2); // true
let num3ToBool = Boolean(num3); // true

Using double NOT operator (to invert result of single NOT operator):

let num = 0;
let num2 = 3;
let num3 = -3;
let numToBool = !!num; // false
let num2ToBool = !!num2; // true
let num3ToBool = !!num3; // true

Boolean to number

[hook]

Using ternary operator (recommended - fastest benchmark):

let bool = true;
let bool2 = false;
let boolToNum = bool ? 1 : 0; // 1
let bool2ToNum = bool2 ? 1 : 0; // 0

More about ternary operator

Using unary + operator:

let bool = true;
let bool2 = false;
let boolToNum = + bool; // 1
let bool2ToNum = + bool2; // 0

Using constructor of Number operator:

let bool = true;
let bool2 = false;
let boolToNum = Number(bool); // 1
let bool2ToNum = Number(bool2); // 0