Don*_*Don 163
要转换成245px245只运行:
parseInt('245px', 10);
Run Code Online (Sandbox Code Playgroud)
它只保留前导数字并丢弃所有其余数字.
Cas*_*jne 36
使用
var size = parseInt('245px', 10);
Run Code Online (Sandbox Code Playgroud)
其中10是定义的基数parseInt是解析为十进制值
parseInt()函数解析字符串并返回一个整数.
签名是 parseInt(string, radix)
第二个参数强制parseInt使用十进制编号系统.
为什么?如果$(this).attr('num')为"08",则没有基数的parsInt将变为0
For*_*ver 16
转换最后没有"px"的像素值.使用parseFloat.
parseFloat('245px', 10);//returns 245
Run Code Online (Sandbox Code Playgroud)
注意:如果使用parseInt,如果值是整数,则vaue将是正确的.如果该值是小数,如245.50px,则该值将四舍五入为245.
Joc*_*hem 15
这完全符合您的要求:删除字符串的最后两个字符:
s.substr(0, s.length-2);
Run Code Online (Sandbox Code Playgroud)
出人意料的是,子方法s.substr(0, s.length-2);实际上是相当快一点去除px(是的,它是不干净好看,如果有一个空间,它仍将是- "250px" -> "250"VS "250 px" -> "250 ").
如果你想考虑空间(你可能应该这样做),那么使用该.trim()函数实际上会减慢substr测试的速度,使得该parseInt方法实际上变得更好.
使用的另一个好处parseInt(s, 10)是您还可以获得类型转换,并可以立即开始将其应用于数学函数.
所以最后,它实际上取决于你计划对结果做什么.
substr方法可能是你最好的选择.s.substr(0, s.length-2) == 0,然后使用substr方法是最好的,因为"250 " == 250(即使有空格)将导致作为trueparseInt路线.http://jsperf.com/remove-px-from-coord
对jspref的测试占用了一个空间.我也尝试了一个s.split('px')[0]和s.replace(/ *px/g, '')功能,两者都发现速度较慢.
随意添加其他测试用例.