Check if a variable is a numeric in JavaScript/jQuery
This post will discuss how to check if a variable is a numeric in JavaScript/jQuery. That is, find out if a variable represents a valid number or not.
1. Using jQuery library
The jQuery $.isNumeric() function checks whether a given value represents a valid numeric value or not. It returns true if the value is of type number or string and can be coerced into finite numbers, and false otherwise. It takes the value to be tested, which can be of any type, such as a string, a number, a boolean, or an object. The function will try to convert the value to a number and then check if it is finite. If the value is not a valid number, it will return NaN (Not a number), which is considered false by the function. Here are some examples of using the jQuery isNumeric() function with different values:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// using jquery library const { JSDOM } = require("jsdom"); const { window } = new JSDOM(); let $ = require("jquery")(window); console.log($.isNumeric(1)); // true console.log($.isNumeric(0)); // true console.log($.isNumeric(-1)); // true console.log($.isNumeric(new Number(1))); // true console.log($.isNumeric(1.0)); // true console.log($.isNumeric(1.1)); // true console.log($.isNumeric(Math.PI)); // true console.log($.isNumeric("1")); // true console.log($.isNumeric(NaN)); // false console.log($.isNumeric(Infinity)); // false console.log($.isNumeric(-Infinity)); // false console.log($.isNumeric("string")); // false console.log($.isNumeric(true)); // false console.log($.isNumeric(undefined)); // false console.log($.isNumeric([1])); // false |
2. Using typeof operator
In JavaScript, we can use the typeof operator, which returns a string indicating the operand’s type. We can use the typeof operator with a strict equality operator (===) to check for primitive numeric values. To check for the Number object as well, we can use the instanceof operator. Here are some examples of using the typeof() and instanceof operator on different inputs:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function isNumber(n) { return (typeof(n) === "number" || n instanceof Number); } console.log(isNumber(1)); // true console.log(isNumber(0)); // true console.log(isNumber(-1)); // true console.log(isNumber(new Number(1))); // true console.log(isNumber(1.0)); // true console.log(isNumber(1.1)); // true console.log(isNumber(Math.PI)); // true console.log(isNumber("1")); // false console.log(isNumber(NaN)); // true console.log(isNumber(Infinity)); // true console.log(isNumber(-Infinity)); // true console.log(isNumber("string")); // false console.log(isNumber(true)); // false console.log(isNumber(undefined)); // false console.log(isNumber([1])); // false |
The above solution returns true for +Infinity, -Infinity, and NaN. This also does not work with strings, which can be coerced into finite numbers (e.g. "1"). To handle this, we can place some additional conditions using isFinite() and isNaN() functions. The following code illustrates this:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function isNumber(n) { return (typeof(n) === "number" || n instanceof Number || (typeof(n) === "string" && !isNaN(n))) && isFinite(n); } console.log(isNumber(1)); // true console.log(isNumber(0)); // true console.log(isNumber(-1)); // true console.log(isNumber(new Number(1))); // true console.log(isNumber(1.0)); // true console.log(isNumber(1.1)); // true console.log(isNumber(Math.PI)); // true console.log(isNumber("1")); // true console.log(isNumber(NaN)); // false console.log(isNumber(Infinity)); // false console.log(isNumber(-Infinity)); // false console.log(isNumber("string")); // false console.log(isNumber(true)); // false console.log(isNumber(undefined)); // false console.log(isNumber([1])); // false |
Alternatively, we can check for numeric values using the unary plus operator (+). This operator also has same limitations as the typeof operator. That is, it doesn’t work for the Number object, and consider +Infinity and -Infinity as numbers. Also, it doesn’t handle strings that can be coerced into finite numbers. These limitations can be handled in the same way as the previous solution.
|
1 2 3 4 |
function isNumber(n) { return (n === +n || n instanceof Number || (typeof(n) === "string" && !isNaN(n))) && isFinite(n); } |
3. Using Number.isFinite() function
Finally, we can use the Number.isFinite() function, which determines whether the specified value is a finite number. It returns true for finite numbers, and false for NaN, positive Infinity, negative Infinity, or non-numeric values including strings that can be coerced into finite numbers. Here are some examples of using the Number.isFinite() function with different values:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
console.log(Number.isFinite(1)); // true console.log(Number.isFinite(0)); // true console.log(Number.isFinite(-1)); // true console.log(Number.isFinite(1.0)); // true console.log(Number.isFinite(1.1)); // true console.log(Number.isFinite(Math.PI)); // true console.log(Number.isFinite(new Number(1))); // false console.log(Number.isFinite("1")); // false console.log(Number.isFinite(NaN)); // false console.log(Number.isFinite(Infinity)); // false console.log(Number.isFinite(-Infinity)); // false console.log(Number.isFinite("string")); // false console.log(Number.isFinite(true)); // false console.log(Number.isFinite(undefined)); // false console.log(Number.isFinite([1])); // false |
That’s all about checking if a variable is a numeric in JavaScript/jQuery.
Thanks for reading.
To share your code in the comments, please use our online compiler that supports C, C++, Java, Python, JavaScript, C#, PHP, and many more popular programming languages.
Like us? Refer us to your friends and support our growth. Happy coding :)