更多课程 选择中心


Web培训

400-111-8989

Web培训

Javascript:常见的数据转换及取巧方法

  • 发布:佚名
  • 来源:网络
  • 时间:2015-10-13 15:54

诸如将字符串’1’转换成数字1,就叫数据类型转换了。数据类型转换是比较简单的事情,只是有些取巧的办法可以节省代码。

我先假设转换前的数据做为变量a,转换后的是b.

任何类型转成字符串

最简单的办法就是b=a+”.

当然你也可以使用b=String(a).

纯数字的字符串转成number

纯数字组成的字符串是这种:’12311′

最简单的办法是b=a-0,也可以使用b=Number(a)

带字母的字符串转成number

有字母有数字的字符串,经常碰到,特别是从css里取元素坐标的时候:12px

我们要用的是12,而这个转换没什么简单的办法,就是用最原始的办法:b=parseInt(a,10)

进制转换

如十进制转成2进制,8进制,16进制;或者反过来。

这里要注意的是,十进制是一个很重要的角色,parseInt的转换结果,始终是十进制的数字。

而parseInt有第2个参数,他的作用是:指明当前字符串的进制。比如,你要把十六进制的’abcdef’转成十进制的数字,你最好这样parseInt(‘abcdef’,16)。其他进制的字符串转成十进制也是类似。

十进制转成其他进制,就得用toString了。如12345..toString(16)。

这里有两个.可不是我打多了一个哈。因为JS里面,数字后的第一个点会被当作小数点看待。所以直接12345.toString(16)是会报错的。

下面问题来了:怎么把2进制转成16进制?

直接转?对不起没这个方法,我们要先把2进制转成10进制,再从10进制转成16进制,具体代码就不写了。

小数转成整数

需要用到这个转换的,通常是要把JS计算出来的结果赋给DOM元素时。最常用的方法就是JS原生的三个Math下的方法了:floor,ceil,round.

不过floor和ceil,大家一定要注意负数时的情况,比如Math.floor(-2.678),会得到-3而不是-2,因为floor是取最小的整数。

而除了以上3个方法,还有两个直接去掉小数位的方法,即位运算符:2.678|0与2.678>>0。这两个方法需求代码量更少,结果与floor一致。

但是要注意,|与>>运算符,在用到负数上时,是往大的取而不是和floor一致了,因为,它们只是单纯的直接去掉小数位

转成指定位数的小数

前提当然是数字类型才能转换成小数,而且数字转换成小数是Number类型自带的方法toFixed。

使用方法10..toFixed(2)或(10).toFixed(2)。

toFixed的参数是要保留的小数位数。

toFixed可以把整数转成小数,也可以把多位小数转成指定位数的小数。如(10.1232).toFixed(2)。

另外,toFixed有个小问题就是四舍五入处理得不是很准,大家感兴趣的可以搜索一下,但这个问题可以无视

类数组对象转换成数组

类数组对象是指数据排列像是数组,也可以循环,但却没有数组原生方法的对象。如获取到的DOM元素集,参数集arguments.

最简单的办法是:b=Array.prototype.slice.call(a);这也是效率最高的。

如果不用上面的办法,你也可以新建一个空数组,然后循环类数组对象,把它的元素一个个放进数组里去。但这种方式就麻烦得紧了。

数组转成字符串

用得最多的当然是数组原生的join方法了。

但如果你对数组元素之间的间隔字符没有要求的话,也可以用数组的toString()方法,会默认组成一个由,分隔元素的字符串。

而toString的取巧用法,就是 [1,2,3]+”,跟前面说的:任何类型转成字符串的方法一样。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:javascript数组常用方法
下一篇:为什么每个程序员都需要学习JavaScript?

熟练掌握JavaScript的秘诀

2017年JavaScript相关技术趋势

JavaScript 设计模式入门技术

为什么学web前端,要从JavaScript开始学起?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

贵州省

云南省

广西省

海南省