javascript 字符串与数字比较大小

在项目开发过程中,经常遇到一些细节问题,考验着我们对javascript基础知识的理解程度。今天就遇到了一个老生常谈,却时常又容易忽视的问题。
起因是在两个未写明type的input框中获取到了数字字符串,要进行大小比较,进而进行页面上的提示。
举个栗子:

// 获取到的两个值
var a = "2";
var b = "10";

a < b  => false

这肯定不是我们常识所能接受,也不是我们原想的结果。那么问题出在哪里了呢?原因是,这不是纯数字的大小比较,而是字符串的大小比较。两个字符串的比较,是对比字符串首字符的字符编码值(ASCII值),如上例

// 对应的ASCII值
'2'  =>   50
'1'  =>   49

则结果就如上例那样了。

以上可以参看ECMAScript 关系运算符详解js运算符

我们要修改这样的bug,方向是,将字符串转化为数字,再进行大小比较,方法有三,如下:

1、使用js提供的转换成数字的方法,parseInt()用于转换为整数,parseFloat()用于转换为浮点数;注意NaN情况的处理。

2、使用js提供的强制类型转换方法,Number(),可根据数字字符串为整数或者浮点数,同样需要注意NaN情况的处理。

以上可参看ECMAScript 类型转换

3、还有两个小技巧,可参看ECMAScript 一元运算符中,一元加法和一元减法部分的文档

+a     => 2
a - 0  => 2

详解js运算符的末尾,还有一个运算符的思维导图,值得分享,转载如下:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值