Dữ liệu biểu mẫu luôn là văn bản. Đề nghị của tôi là bạn phân tích nó như số nguyên và so sánh nó với bản gốc:
var sampleData = ["not a number", "0", "10", "3.14", "-12", "-0.34", "2e10", "34foo", "foo34"];
var integers = [], notIntegers = [];
for(var i=0, len=sampleData.length; i<len; i++){
var original = sampleData[i];
var parsed = parseInt(original, 10);
if(!isNaN(parsed) && original==parsed){
integers.push(parsed);
}else{
notIntegers.push(original);
}
}
alert("Integers: " + integers.join(", ") + "\nNot integers: " + notIntegers.join(", "));
này hiển thị:
Integers: 0, 10, -12
Not integers: not a number, 3.14, -0.34, 2e10, 34foo, foo34
ký hiệu khoa học không được hỗ trợ, không phải ngàn dải phân cách. Nếu đó là một vấn đề, bạn cần một cái gì đó khác nhau;)
Cập nhật: Tôi muốn nói rõ ràng đây chỉ là một trong những cách tiếp cận có thể, chứ không phải là sự thật duy nhất. Cách tiếp cận này có ý nghĩa nếu bạn cần làm toán với dữ liệu, do đó bạn phải nhận được một biến số.
Nguồn
2010-12-28 09:08:56
Chỉ cần lưu ý rằng [* Number.isInteger *] (http: // ecma-interna tional.org/ecma-262/6.0/index.html#sec-isinteger) đã được thêm vào trong ECMA-262 ed 6 aka ECMAScript 2015. – RobG