JavaScript判断是否为数字的4种方法及效率比较

今天针对不同的数值判定方式在chrome上做了一个效率的对比,结果如下:

注意:通过正则表达式仅能用于字符串中的内容是否是纯数值,而不能用于判断是否是数值对象。放在此处仅用于对比。

其代码如下:

 var ret;
 var o = 1;
 var pattern = /^(-?\d*.?\d*)$/;
 var toStr = {}.toString;
 var array = {};
 array["[object Number]"] = "number";

 console.log("各种判断是否数值的速度比较!")

 console.log("方法一:pattern.test(o)");
 console.time("first");
 for (var i=0;i<10000;i++){
  ret = pattern.test(o);
 }
 console.timeEnd("first");
 console.log(ret);

 console.log("方法二:o instanceof Number");
 console.time("second");
 for (var i=0;i<10000;i++){
  ret = o instanceof Number;
 }
 console.timeEnd("second");
 console.log(ret);

 console.log("方法三:o.constructor == Number");
 console.time("thirth");
 for (var i=0;i<10000;i++){
  ret = o.constructor == Array;
 }
 console.timeEnd("thirth");
 console.log(ret);

 console.log("方法四:array[toStr.call(o)] == 'number'");
 console.time("forth");
 for (var i=0;i<10000;i++){
  ret = array[toStr.call(o)] == "number";
 }
 console.timeEnd("forth");
 console.log(ret);
(0)

相关推荐

  • javascript 判断整数方法分享

    判断整数的方法有两种:正则判断和逐字判断. 由于逐字判断效率过于低下,这里就不予描述了,有兴趣的看客可以自己谷歌. 1.正则判断 复制代码 代码如下: var r = /^\+?[1-9][0-9]*$/; //正整数 console.log(r.test(1.23)); 效果测试: http://jsfiddle.net/wzsdp9Lc/ 扩展功能列表 复制代码 代码如下: "^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$&quo

  • javascript判断非数字的简单例子

    复制代码 代码如下: <html><head><title>判断是否为数字及空格</title><script type="text/javascript" src="jquery.min.js"></script> //这里有无也无所谓<script type="text/javascript">function check_num()  //建立函数{   

  • JavaScript检查数字是否为整数或浮点数的方法

    本文实例讲述了JavaScript检查数字是否为整数或浮点数的方法.分享给大家供大家参考.具体如下: 检查是否为整数: function isInt(n) { return typeof n === 'number' && n % 1 == 0; } // or ,this support ie3 function isInt(n) { return typeof n === 'number' && parseFloat(n) == parseInt(n, 10) &

  • javascript 正则 判断是否是数字的脚本

    不错的一个用正则检测输入的字符是否为数字的代码,也是一种并不常见的写法 Untitled Document function $(obj){ return document.getElementById(obj); } function checkIsInteger(str) { //如果为空,则通过校验 if(str == "") return true; if(/^(\-?)(\d+)$/.test(str)) return true; else return false; } S

  • javascript使用isNaN()函数判断变量是否为数字

    javascript中判断变量是否为数字的方法,这里主要介绍javascript里的 isNaN() 函数. 功能: isNaN() 函数用于检查其参数是否是非数字值. 语法: isNaN(x) x 必需.要检测的值. 返回值: 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true.如果 x 是其他值,则返回 false. 说明: isNaN() 函数可用于判断其参数是否是 NaN,该值表示一个非法的数字(比如被 0 除后得到的结果). 如果把 NaN 与任何值(

  • JavaScript 判断指定字符串是否为有效数字

    这样的check以前已经碰到很多了,但每次都是解决了就完了,没有记录下来,等下次碰到时又要花很多的时间去写.东西是需要积累的,现在特记录下来,希望这样的工作不再重复太多,也与大家一起分享. 复制代码 代码如下: <!--- ================================================================================ 机能概要 :check指定字符串是否为有效数字 作成者 :Peter Jin 作成日 :2010-04-23 ==

  • JavaScript中判断整数的多种方法总结

    之前记录过JavaScript中判断为数字类型的多种方式,这篇看看如何判断为整数类型(Integer). JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示,和Java的double类型一样.但实际操作中比如数组索引.位操作则是基于32位整数. 方式一.使用取余运算符判断 任何整数都会被1整除,即余数是0.利用这个规则来判断是否是整数. 复制代码 代码如下: function isInteger(obj) {     return obj%1 === 0 } isIn

  • JavaScript判断是否为数字的4种方法及效率比较

    今天针对不同的数值判定方式在chrome上做了一个效率的对比,结果如下: 注意:通过正则表达式仅能用于字符串中的内容是否是纯数值,而不能用于判断是否是数值对象.放在此处仅用于对比. 其代码如下: var ret; var o = 1; var pattern = /^(-?\d*.?\d*)$/; var toStr = {}.toString; var array = {}; array["[object Number]"] = "number"; console

  • JavaScript判断是否为数组的3种方法及效率比较

    今天针对不同的数组判定方式在chrome上做了一个效率的对比,结果如下: 其代码如下: var ret; var o = [1,2,3]; var toStr = {}.toString; var array = {}; array["[object Array]"] = "array"; console.log("各种判断是否数组的速度比较!") console.log("方法一:Array.isArray(o)"); co

  • JavaScript判断是否为数字的几种方式汇总(推荐!)

    目录 前言 1. typeof.instanceof.Number.isInteger 2. parseInt.parseFloat 3. isNaN.isFinite 4. Number.isNaN.Number.isFinite 5. 正则表达式 6. 终极方案(推荐) 7. 结语 前言 js判断是否为数字的方式很多: typeof.instanceof.Number.isNumber parseInt.parseFloat isNaN.isFinite Number.isNaN.Numbe

  • JavaScript判断数组重复内容的两种方法(推荐)

    前言 一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true 否则,返回 false. 思路 把数组变成字符串 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复 如何拿A字符串和B字符串进行对比,并且要求判断出B字符串中包含过个A字符串呢? 方法一 indexOf() 和 lastIndexOf() 对比法. 首先,我们构建代码: var arr = ["aa","bb",&q

  • JavaScript判断对象和数组的两种方法

    在调用后端接口时,由于后端接口的不规范统一,接口最外层在没有数据时返回的是空数组(其实更想要的是空json对象),而在有数据时返回的是json对象,所以在接收到后端返回的接口时就需要首先判断返回的数据是对象还是数组,这里提供一些方法  方法一: //判断是否为数组 function isArray(obj) { return obj instanceof Array; } //判断是否为对象 function isObject(obj) { return obj instanceof Objec

  • C# 判断字符为空的6种方法的效率实测对比

    C#中提供了相当丰富的方法或属性来判断一个字符是否为空,常用的方法有以下6种 1. strTest== "" 2. strTest.Equals("") 3. strTest== string.Empty 4. strTest.Equals(string.Empty) 5. strTest.Length == 0 6. string.IsNullOrEmpty(strTest) 为了对以上6种方法的效率,有个直观的感受,我特意编写了以下的测试代码: using Sy

  • javascript判断机器是否联网的2种方法

    在很多场景下,只有机器已经联网以后,web应用才能启动.如果没有联网,就会提示错误.. 但是机器有时候要重启. 如果机器重启后,立刻启动web应用的话,可能,机器上的网络服务还没有准备好. 特别是windows7,启动网络服务需要好几秒,这个时候怎么办呢? 之前尝试过几种方法: 比如 通过ping来判断, 但是ping需要有一个非本机的ip地址. 这个不是很通用 比如监控某个端口是否已经被占用,但是光端口占用,也不能说明网络已经启动了. 另一个方面,如果是web应用的话,最好是在前端判断,比如用

  • Shell脚本中判断变量为数字的3种方法

    方法1:通过expr 计算变量与一个整数值相加,如果能正常执行则为整数,否则执行出错,$?将是非0的值 复制代码 代码如下: expr $args + 0 &>/dev/null 方法2:打印变量通过sed替换的方式,将变量中的数字替换为空,如果执行替换后变量为空,则为整数 复制代码 代码如下: echo $args | sed 's/[0-9]//g' 如果判断负数则再用sed过滤负号 复制代码 代码如下: echo $args | sed 's/[0-9]//g' | sed 's/-/

  • JavaScript字符串转数字的5种方法及遇到的坑

    String转换为Number有很多种方式,我可以想到的有5种! parseInt(num); // 默认方式 (没有基数) parseInt(num, 10); // 传入基数 (十位数) parseFloat(num) // 浮点数 Number(num); // Number 构造器 ~~num //按位非 num / 1 // 除一个数 num * 1 // 乘一个数 num - 0 // 减去0 +num // 一元运算符 "+" 选择哪一种呢?什么时候选择它?为什么选择这种

  • 详解JavaScript中分解数字的三种方法

    本文基于免费代码营基本算法脚本"分解数字" 在数学中,非负整数n的阶乘可能是一个棘手的算法.在本文中,我将解释这种方法,首先使用递归函数,第二种使用而循环,第三种使用以循环. 算法挑战 返回提供的整体的阶乘. 如果整体用字母n表示,则阶乘是所有小于或等于n的正整数的乘积. 阶乘经常用简写符号n!表示! 例如:5!= 1 * 2 * 3 * 4 * 5 = 120 function factorialize(num) { return num; } factorialize(5); 提供

随机推荐