Home > Web Front-end > JS Tutorial > body text

How to determine whether a value is an integer in javascript

青灯夜游
Release: 2023-01-05 16:11:35
Original
3088 people have browsed it

Judgment method: 1. Use the "value%1===0" statement; 2. Use the "Math.floor(value)===value" statement; 3. Use "parseInt(value, 10) === value" statement; 4. Use the "(value|0)=== value" statement; 5. Use the "Number.isInteger(value)" statement.

How to determine whether a value is an integer in javascript

The operating environment of this tutorial: windows7 system, javascript version 1.8.5, Dell G3 computer.

JavaScript does not distinguish between integers and floating point numbers. All numbers are internally represented in a 64-bit floating point format, the same as Java's double type. However, actual operations such as array indexing and bit operations are based on 32-bit integers. So how to determine whether it is an integer type (Integer)?

Method 1. Use the remainder operator to determine

Any integer will be divisible by 1, that is, the remainder is 0. Use this rule to determine whether it is an integer.

function isInteger(obj) {
 return obj%1 === 0
}
isInteger(3) // true
isInteger(3.3) // false 
Copy after login

It can be seen from the above output that this function is very useful, but it is not capable of strings and certain special values.

isInteger('') // true
isInteger('3') // true
isInteger(true) // true
isInteger([]) // true
Copy after login

For empty strings, string type numbers, Boolean true, and empty The arrays all returned true, which is really unacceptable. If you are interested in the internal conversion details of these types, please refer to: Weird False Values ​​in JavaScript

Therefore, you need to first determine whether the object is a number, such as adding a typeof

function isInteger(obj) {
 return typeof obj === 'number' && obj%1 === 0
}
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Copy after login

Well, like this It's relatively perfect.

Method 2. Use Math.floor to determine if

the integer is still equal to itself after rounding. Use this feature to determine whether it is an integer. Math.floor example, as shown below

function isInteger(obj) {
 return Math.floor(obj) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Copy after login

This directly masks the string, true, [], and the amount of code is less than the previous function.

Method three, judging by parseInt

function isInteger(obj) {
 return parseInt(obj, 10) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Copy after login

is very good, but there is also a shortcoming

isInteger(1000000000000000000000) // false
Copy after login

It actually returns false, which is unreasonable. The reason is that parseInt forces the first argument to be parsed into a string before parsing the integer. This method of converting numbers to integers is not a good choice.

Method 4. Judgment through bit operations

function isInteger(obj) {
 return (obj | 0) === obj
}
isInteger(3) // true
isInteger(3.3) // false
isInteger('') // false
isInteger('3') // false
isInteger(true) // false
isInteger([]) // false
Copy after login

This function is very good and very efficient. But there is a flaw. As mentioned above, bit operations can only handle numbers within 32 bits, and cannot do anything with more than 32 bits, such as

isInteger(Math.pow(2, 32)) // 32位以上的数字返回false了
Copy after login

Of course, most of the time we will not use such large numbers. .

Method 5. ES6 provides Number.isInteger

Number.isInteger(3) // true
Number.isInteger(3.1) // false
Number.isInteger('') // false
Number.isInteger('3') // false
Number.isInteger(true) // false
Number.isInteger([]) // false
Copy after login

Currently, the latest Firefox and Chrome already support it.

Note: Each of these five methods has its own advantages and disadvantages. You can compare them carefully and choose the best one for use.

[Recommended learning: javascript advanced tutorial]

The above is the detailed content of How to determine whether a value is an integer in javascript. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template