JS如何将数字类型转化为没3个一个逗号的金钱格式_javascript技巧

3345687687876789123

转化为:xxx,xxx,xxx

复制代码 代码如下:

<script type="text/javascript">

window.onload = function(){
//整个测试由小刀提供
var testFun = function( callback, str ){
var tipElem = document.createElement( 'div' ),
startTime,
duration = 0;
for( var j = 5; j > 0; j-- ){
startTime = +new Date();
for( var i = 10000; i > 0; i-- ){
callback();
}
duration = ((+new Date()) - startTime) + duration;
}
duration = (duration / 5).toFixed(0);
tipElem.innerHTML = str + '总耗时:' + duration + ' ms';
document.body.appendChild( tipElem );
};

var str = '3345687687876789123';

var cuter1 = function( str ){//带刀
var len = str.length,
lastIndex,
arr = [];
while( len > 0 ){
lastIndex = len;
len -= 3;
arr.unshift( str.substring(len, lastIndex) );
}
return arr.join(',');
};

var cuter2 = function( str ){//abcd
return str.replace( /\B(?=(?:\d{3})+$)/g, ',' );
};

var cuter3 = function( str ){//前叔
return str.replace(/(.*)(\d{3})$/,function(){
if(arguments[1]&& arguments[2]){
return arguments[1].replace(/(.*)(\d{3})$/,arguments.callee)+","+arguments[2];
} else {
return arguments[0];
}
});
};

var cuter4 = function( str ){//Alucelx
return str.split('').reverse().join('').replace(/(\d{3})/g, '$1,').split('').reverse().join('');
};

var cuter5 = function( str ){//司徒正美
var ret = [];
while(str){
str = str.replace(/\d{1,3}$/g,function(a){
ret.unshift(a)
return ""
});
}
return ret.join(",");
};
var cuter6 = function( str ){//司徒正美
var n = str.length % 3;
if(n){
return str.slice(0,n) + str.slice(n).replace(/(\d{3})/g,',$1')
}else{
return str.replace(/(\d{3})/g,',$1').slice(1)
}
};
var cuter7 = function(str){//司徒正美
var ret = ""
for(var i = 0, n = str.length, m = n %3 - 1; i < n; i++){
ret += str.charAt(i)
if( i % 3 === m ){
ret += ","
}
}
var e = ret.length - 1
return ret.charAt(e) == "," ? ret.slice(0,e) : ret
}
var cuter8 = function(str){//[[valueOf]]
var s2 = [].slice.call(str);
for(var i=s2.length-3; i>0;i-=3){
s2.splice(i, 0 ,',' );
}
return s2.join("")
}
var cuter9 = function(str){//听说
var newStr= new Array(str.length+ parseInt(str.length/3));
newStr[newStr.length-1]=str[str.length-1];
var currentIndex=str.length-1;
for(var i = newStr.length-1;i >= 0;i--) {
if((newStr.length-i)%4==0)
{
newStr[i]=",";
}else{
newStr[i]=str[currentIndex--];
}
}
return newStr.join("")
}
var cuter10 = function(str){//Rekey
var len = str.length, str2 = '', max = Math.floor(len / 3);
for(var i = 0 ; i < max ; i++){
var s = str.slice(len - 3, len);
str = str.substr(0, len - 3);
str2 = (',' + s) + str2;
len = str.length;
}
str += str2;
return str
}
//下面是性能测试
testFun(function(){
cuter1(str);
}, '方法一' );

testFun(function(){
cuter2(str);
}, '方法二' );

testFun(function(){
cuter3(str);
}, '方法三' );

testFun(function(){
cuter4(str);
}, '方法四' );

testFun(function(){
cuter5(str);
}, '方法五' );
testFun(function(){
cuter6(str);
}, '方法六' );
testFun(function(){
cuter7(str);
}, '方法七' );
testFun(function(){
cuter8(str);
}, '方法八' );
testFun(function(){
cuter9(str);
}, '方法九' );
testFun(function(){
cuter10(str);
}, '方法十' );
}
</script>

新能测试的结果为:

复制代码 代码如下:

方法一总耗时:14 ms
方法二总耗时:9 ms
方法三总耗时:174 ms
方法四总耗时:34 ms
方法五总耗时:39 ms
方法六总耗时:7 ms
方法七总耗时:9 ms
方法八总耗时:30 ms
方法九总耗时:14 ms
方法十总耗时:4 ms

时间: 2024-09-16 20:43:50

JS如何将数字类型转化为没3个一个逗号的金钱格式_javascript技巧的相关文章

js在数组中删除重复的元素自保留一个(两种实现思路)_javascript技巧

例如:var student = ['qiang','ming','tao','li','liang','you','qiang','tao']; 第一种思路是:遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中 用到两个函数:for ...in 和 indexOf() <script type="text/javascript"> var student = ['qiang','ming','tao','li','l

JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)_javascript技巧

随着移动互联网的不断普及,企业的网络宣传不仅只局限在PC端,还要在移动端发展.我们在自己的网站做了WAP手机完整之后,如果有用户通过手机访问我们的企业顶级域名网站,就要判断跳转到专为的WAP网站,下面小编通过两种方式介绍根据手机浏览器类型跳转WAP手机网站,具体内容如下. 第一种方式:直接JS脚本 <script type="text/javascript"> try { var urlhash = window.location.hash; if (!urlhash.ma

js与jquery获取父级元素,子级元素,兄弟元素的实现方法_javascript技巧

先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素 原生的JS获取ID为test的元素下的子元素.可以用: 比如: <div id="dom">    <div></div>    <div></div>    <div></div></div> var

js动态获取子复选项并设计全选及提交的实现方法_javascript技巧

在做项目的时候,会遇到根据父选项,动态的获取子选项,并列出多个复选框,提交时,把选中的合并成一个字符提交后台 本章将讲述如何通过js控制实现该操作: 1:设计父类别为radio,为每一个radio都加上onclick事件,并默认类别1为选择状态. <input type="checkbox" name="selectall" id="selectall" onClick="selectAll();" checked=&q

JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决_javascript技巧

var date = new Date('2016-11-11 11:11:11'); document.write(date); 最近在写一个时间判断脚本,需要将固定好的字符串时间转换为时间戳进行比较,在做的时候个人习惯使用chrome作为调试工具,代码基本完成之后,一切正常: 使用其他浏览器访问,好嘛,IE跟safari都不兼容,返回错误"Invalid Date". 想着估计是字符串格式的问题,改成'2016/11/11 11:11:11'再测试,结果正常,以为这样应该没问题了,

JS添加删除一组文本框并对输入信息加以验证判断其正确性_javascript技巧

在做项目中遇到这样一个问题,就是我们需要添加几组数据到数据库,但是具体几组数据不确定,有客户来填写,比如我们需要添加打折策略,可能个策略有很多组方案,比如"满100打5折,满200打4折,满500打3折"等等,这是作为一组方案来执行的,但是并不确定一组方案中有几个子方案,所以,这里我用JS进行添加删除子方案,并要对方案输入的正确性加以判断,并且通过json传输写入数据库,这里我们主要写如果添加删除一组子项目和如果给每个文本框添加验证. 动态添加一组文本框: 复制代码 代码如下: var

浅谈JS中逗号运算符的用法_javascript技巧

注意: 一.由于目前正在功读JavaScript技术,所以这里拿JavaScript为例.你可以自己在PHP中试试. 二.JavaScript语法比较复杂,因此拿JavaScript做举例. 最近重新阅读JavaScript权威指南这本书,应该说很认真的阅读,于是便想把所学的东西多记录下来.后 面本人将逐步写上更多关于本书的文章. 本文的理论知识来自于JavaScript权威指南,我这里做一下整理,或者说叫笔记. 如果你的基础够好的话,完全理解不成问题,但是如果读得有些郁闷的话,可以加我的QQ:

基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)_javascript技巧

一.应用场景 鼠标hover弹出div,并且鼠标离开后不能马上隐藏,因为这个div上还有功能入口.比如: 鼠标经过好友列表中的好友头像时显示资料卡的效果如下所示: hover时显示二维码 二.实现 用如下这样一个简单的效果:鼠标hover到A上显示B来模拟 有2种实现方式,推荐第二种,第一种有弊端下面会说. 1.方法一 原理:把触发元素A和要显示元素B放于同一个父级元素内,鼠标经过父级元素时触发显示B.这样鼠标移动到B时仍然 处于该父级元素内,则div不会隐藏. 代码: <!DOCTYPE ht

js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)_javascript技巧

问题缘由:负责公司的开发平台研发工作,考虑的知识产权的保护工作,必须要考虑java的加密技术和js脚本的加密技术.在目前java加密很容易破解的情况下,还是先搞定js的加密和压缩,一方面可以提高页面加载性能,另外一方面也希望辛苦研发出来的成果得到一定的保护. 研究过程: 1.先强烈鄙视一下哪些随便转载文章的家伙,给我制造了很大的麻烦!!网上很多帖子都不靠谱.. 2.首先想了解jquery使用什么压缩的, 网上找了半天,说法不一样,后来还是在jquery官网的最频繁问题中找到了答案,但这已经是绕了