यह निर्भर करता है, क्या आप भी संभावित पूर्णांकों के रूप में तार डालना चाहते हैं?
इससे चल जाएगा:
function isInt(value) {
return !isNaN(value) &&
parseInt(Number(value)) == value &&
!isNaN(parseInt(value, 10));
}
बिटवाइज ऑपरेशन के साथ
सिंपल पार्स एंड चेक
function isInt(value) {
var x = parseFloat(value);
return !isNaN(value) && (x | 0) === x;
}
शॉर्ट-सर्कुलेटिंग, और पार्स ऑपरेशन को सहेजना:
function isInt(value) {
if (isNaN(value)) {
return false;
}
var x = parseFloat(value);
return (x | 0) === x;
}
या शायद दोनों एक शॉट में:
function isInt(value) {
return !isNaN(value) && (function(x) { return (x | 0) === x; })(parseFloat(value))
}
टेस्ट:
isInt(42) // true
isInt("42") // true
isInt(4e2) // true
isInt("4e2") // true
isInt(" 1 ") // true
isInt("") // false
isInt(" ") // false
isInt(42.1) // false
isInt("1a") // false
isInt("4e2a") // false
isInt(null) // false
isInt(undefined) // false
isInt(NaN) // false
यहाँ की बेला है: http://jsfiddle.net/opfyrqwp/28/
प्रदर्शन
परीक्षण से पता चलता है कि शॉर्ट-सर्किटिंग समाधान में सबसे अच्छा प्रदर्शन (ऑप्स / सेकंड) है।
// Short-circuiting, and saving a parse operation
function isInt(value) {
var x;
if (isNaN(value)) {
return false;
}
x = parseFloat(value);
return (x | 0) === x;
}
यहाँ एक बेंचमार्क है:
http://jsben.ch/#/htLVw
यदि आप एक छोटे, छोटे सर्कुलेटिंग के मोटे रूप को पसंद करते हैं:
function isInt(value) {
var x;
return isNaN(value) ? !1 : (x = parseFloat(value), (0 | x) === x);
}
बेशक, मेरा सुझाव है कि मिनिफ़ायर को ध्यान रखना चाहिए।
parseInt
।