当前位置:首页 > 日记 > 正文

js共享的4种数字第一千格式方法

js共享的4种数字第一千格式方法
所谓的数字第一千位形式,即从数字的数目,在每三位之间加一个逗号。例如,10000。为了响应这个要求,我最初写了一个函数:

复制代码代码如下所示:

方法

功能少(NUM){

var结果= },计数器= 0;

Num =(NUM)。分裂(0 | |)。ToString(' ');

对于(var i = num.length - 1;我> = 0;我--){

计数器+;

result.unshift(Num {我});

如果(!(!(计数器% 3)i!= 0){ result.unshift(',');}

}

返回result.join('');

}
方法1的执行是将数字转换成字符串,然后将它们分散到数组中,然后从结束处将数组中的元素逐一插入新数组(结果)的开头。插入元素时,计数器计数一次(加上1)。当计数器是3的倍数时,插入一个逗号,但注意开始(i = 0)不需要逗号。最后,结果是通过调用新数组的连接方法获得的。

这个方法既清晰又易懂,在项目中也使用了一段时间,但直觉告诉我它做得不好。

方法二——方法一的字符串版本

复制代码代码如下所示:

两种方法

功能少(NUM){

var=,计数器= 0;

Num =(Num | |(0)ToString);

对于(var i = num.length - 1;我> = 0;我--){

计数器+;

结果:num.charat(我)+结果;

如果(!(!(计数器% 3)i!= 0){结果,+结果;}

}

返回结果;

}
方法二是方法1的改进版本,它不将字符串分割成数组,而且总是在字符串上操作。

方法三-三个数的循环结束匹配

复制代码代码如下所示:

三 /方法

功能少(NUM){

Var num(NUM = 0),| |)。ToString(RE = / D { 3 } $ /,结果=;

而(re.test(努姆)){

结果:regexp.lastmatch +结果;

如果(Num)!= regexp。lastmatch){

结果,+结果;

Num = regexp.leftcontext;

{人}

=;

打破;

}

}

如果(努姆){结果=数值+结果;}

返回结果;

}
三种方法是从算法完全不同,三号通过正则表达式在每个周期结束后,,,加一个逗号和匹配的内容转化为字符串的开头,然后匹配目标分配(民)不匹配的内容(regexp。leftcontext)。此外,我们还应注意:

1,如果数字是3的倍数,最后一个匹配必须是三个数字,但前三个数字不需要添加逗号。

2、如果数字不是3的倍数,则数值将最终留下1到2个数字。之后,将剩余的数字插入到结果字符串的开头。

尽管方法三减少了周期数(在一个周期处理中有三个字符),但是正则表达式的使用在一定程度上增加了消耗。

方法四-字符串版本三

复制代码代码如下所示:

四 /方法

功能少(NUM){

Var num(NUM = 0),| |)。ToString(结果=;

而(num.length > 3){

结果= ',' + num.slice(3)+结果;

Num = num.slice(0,num.length - 3);

}

如果(努姆){结果=数值+结果;}

返回结果;

}
事实上,截取三个字符结尾的函数可以通过切片,substr,或子方法的字符串类型。这可以让你避免使用正则表达式。

方法五除法结合法

复制代码代码如下所示:

五 /方法

功能少(NUM){

Var num(NUM = 0),| |)。ToString(温度= num.length % 3;

开关(温度){

案例1:

Num =分+ Num;

打破;

案例2:

Num = 0+数字;

打破;

}

返回num.match( / D { 3 } / g)。加入(',')。更换( / ^ 0 + /,);

}
首先,数字的数目乘以3倍。通过正则表达式,我们将它切成三个数字和一个组,然后通过联接方法添加逗号,最后去掉0的补码。

方法六懒惰法

复制代码代码如下所示:

六 /方法

功能少(NUM){

返回(0)。ToString(Num | |)(更换/( D)(=( D { 3 })/ g,1美元,+ $)');

}
人们一直认为这种格式可以通过正则表达式替换完成的,但它需要使用断言和其他的写作方法,但我不会用这部分非常熟悉。Ogle,你真的找到这样一个正则表达式,这估计是最短的代码实现。

测试结果

执行5000次(ms)的时间
方法1
方法二
方法三
方法四
方法五
方法六






十四


十四





一百
十二





一千
十三





一万
二十一





十万
二十一





方法1和方法二的比较表明,字符串运算的效率远远高于数组运算的效率。方法六的结果告诉我们,代码的长度与性能无关,方法四的综合性能最好(但为什么数字是100,性能降低了,这真的是不可解的),主要原因是:

1。比较方法一、二,每行3个字符而不是1个字符,减少循环次数;

2。比较方法三、五或六,没有使用正则表达式,减少消耗。

最后,我选择了方法四作为最后的优化,如果读者有更好的方法来实现或改进他们的观点,他们可以发表评论。

相关文章

PS图象处理软件设计简约时尚创意风

PS图象处理软件设计简约时尚创意风

图象处理,软件设计,创意,简约,网页模板,本教程介绍给朋友,谁使用PS图象处理软件的简单网页模板的设计,时尚的创意风格。教程比较实用。制作的作品非常漂亮。 本教程使用PS图象处理软件设计简约时尚风格的网页模板,作品非常好,主要的教程给你制…

教你使用InDesign长文章排版生成目

教你使用InDesign长文章排版生成目

教你,目录,文章,电脑软件,InDesign,对于长的文章排版目录方法介绍代设计,希望能帮助第一次学习设计的朋友提供一个学习理念 Indesign排版软件的功能是非常强大的,本文将使用一种排版方法为例,在建立目录的排版排版软件InDesign来解释一个很长…

PS图象处理软件使用刷子和过滤器快

PS图象处理软件使用刷子和过滤器快

软件使用,创造,过滤器,图象处理,刷子,使用笔创造光斑非常快。它只需要设置一些参数在预设的画笔。然后在画布上画出初始点。后来,通过调整画笔的大小,不透明度和颜色,我们可以得到更多的级光斑。 使用画笔使光斑非常快,只需在笔刷预置中设置一…

聚苯乙烯洁面乳

聚苯乙烯洁面乳

电脑软件,本教程是向朋友介绍PS,梅丽蔲,图像合成技术,教程非常好。我建议像你这样的朋友可以和教程一起学习。 本文介绍了图片的洗面奶,这是一个朋友的详细照片,谁介绍的照片合成技术产品修饰的电商。很实用,推荐与朋友一起学习。很实用,很有用,一…

Javascript学习笔记的变量和范围

Javascript学习笔记的变量和范围

范围变量,变量,学习笔记,电脑软件,Javascript,一、变 ECMAscript变量是一个松散的变量。所谓的松散变量是变量名可以保存任何类型的数据,每个变量只是保存值的占位符。 定义:无功firstdemo; 两。变量的范围 2.1基本概念 使用var定义一个变量:一…

教你如何在烟火中制作栩栩如生的羽

教你如何在烟火中制作栩栩如生的羽

教你,栩栩如生,烟火,羽毛,如何在,本教程向您展示如何使用烟花是现实的羽化过程。生产过程非常简单。介绍很详细,推荐给朋友们。希望你能喜欢。 本教程向您展示如何使用烟花是现实的羽化过程。制作过程很简单,介绍很详细,和朋友推荐的朋友可以…

黑白抽象美化身PS片段的合成

黑白抽象美化身PS片段的合成

片段,抽象,化身,黑白,电脑软件,虽然它是一个简单的头部,但作者只是简单地装饰了一些片段和笔刷,再加上羽毛的羽毛和飞行的乌鸦,加上个性化的化妆,效果是非常艺术的。 虽然它是一个简单的头部,但作者只是简单地装饰了一些片段和笔刷,再加上羽毛的…

一个详细的解决方案的搜索和排序方

一个详细的解决方案的搜索和排序方

解决方案,搜索,排序方法,表一,详细,本文介绍了查找和排序的方法cgridview相关表一。分享给你供你参考。具体实现的方法如下: 在一cgridview搜索和排序方法有点复杂。今天我看了一个外国人写的游戏。现在我想和你们分享我的朋友们。我相信它…

推荐5种常见的Javascript调试技术

推荐5种常见的Javascript调试技术

调试,推荐,常见,技术,电脑软件,我使用printf调试前,自那时以来,我用这个方法似乎总是能够解决bug的速度。 在某些情况下,需要更好的工具,这里有一些最好的工具,我相信你会发现它们的用处: 1。调试器; 可以使用调试器;语句在代码中添加一个强制断…

PS图象处理软件以创新的双曝光教程

PS图象处理软件以创新的双曝光教程

教程,图象,处理软件,电脑软件,PS,本教程向您介绍利用PS图象处理软件创新的双曝光法。本教程所提供的教程非常漂亮,难度也不是很大。建议你喜欢你的朋友一起学习。 今天,萧边发现Zimo的创意照片后期制作效果mdash;双重曝光的效果。特别是,教程非…

掷弹兵彩票抽奖实现的一个例子

掷弹兵彩票抽奖实现的一个例子

彩票,抽奖,例子,电脑软件,掷弹兵,本文描述了掷赢游戏的jQuery实现的详细步骤,供大家参考,具体分析如下: 本游戏是在垄断游戏的背景下,综合运用jQuery和php的知识,设计出掷骰子点来达到抽奖的效果,当然,抽奖的概率是可控的,开发者可以用一些修改的…

画家发型的风格和绘画过程

画家发型的风格和绘画过程

画家,风格,过程,电脑软件,本教程介绍朋友的风格和绘画风格的画家,插画教程是王子的能力开放,成员非常感激gxiaoman分享,实践样式设计和画家的衣服是同一作者,推荐给大家,希望对你有帮助 本教程介绍朋友的风格和绘画风格的画家,插画教程是王子的能…