关于数值加千位符网上有很多种方式,有的是通过截取字符串来添加千位符,这种方式很繁琐,最后翻遍百度找到一种比较简洁的方式去实现数值加千位符,下面直接上代码
(function($){
$.extend({
thousandSeparator:function(number){
var isLegal = (typeof number === "string" || typeof number === "number")&&(!isNaN(number))
if(isLegal){
return Number(number).toLocaleString("zh-cn")
}
return "非数值型无法添加千位符"
}
})
})(jQuery)
console.log($.thousandSeparator(192837)) //返回192,837
console.log($.thousandSeparator("192837")) //返回192,837
console.log($.thousandSeparator("aaa")) //返回"非数值型无法添加千位符"
console.log($.thousandSeparator(true)) //返回"非数值型无法添加千位符"
console.log($.thousandSeparator([1,2,3,4])) //返回"非数值型无法添加千位符"
console.log($.thousandSeparator({aaa:111})) //返回"非数值型无法添加千位符"
console.log($.thousandSeparator(function(){})) //返回"非数值型无法添加千位符"
网上找到一个js方法toLocaleString,当一个数值类型的值通过该方法转换成字符串时会自动加上千位符,但是一个字符串型的数值通过该方法转换则不会有该效果,方法可以传入参数locales,也可以不传值,建议传值,因为每个国家对字符串转换的规则不尽相同。
var n = 1111
console.log(n.toLocaleString()) //1,111
var n = "1111"
console.log(n.toLocaleString()) //1111
所以当传入的值是字符串型数值时需要通过Number方法将其转化成数值类型
传入的值必须是数值类型,或者是字符串类型的数值,其他类型的数据将无法转换,需要注意的是返回的值是字符串
console.log(typeof $.thousandSeparator("192837")) //string
如果有什么不严谨的地方或者有更好的实现方式,欢迎批评和分享
网友评论