在计数功能上划分数字

时间:2015-01-28 18:15:48

标签: javascript match

我开始学习javascript,我基本上需要一个每1秒向一个数字(即0)添加x值的计数。我修改了一些我在网上找到的代码并提出了这个代码:

var d=0;
var delay=1000;
var y=750;

function countup() {
document.getElementById('burgers').firstChild.nodeValue=y+d;
d+=y;
setTimeout(function(){countup()},delay);

}

if(window.addEventListener){
window.addEventListener('load',countup,false);
}
else { 
if(window.attachEvent){
window.attachEvent('onload',countup);

}
}

那里可能存在剩余代码,但它按预期工作。

现在我的下一步是使用“,”每3位数对结果字符串进行分割 - 基本上1050503将变为1,050,503。

这是我从我的研究中找到并改编的:

"number".match(/.{1,3}(?=(.{3})+(?!.))|.{1,3}$/g).join(",");

我无法找到将此代码合并到另一个代码中的方法。我该怎么用来替换这段代码的“数字”部分?

答案可能很明显但我已经尝试了所有我认识的事情。

提前致谢!

1 个答案:

答案 0 :(得分:0)

要使用匹配语句,您需要将数字转换为字符串。

假设你有1234567

var a = 1234567;
a = a + ""; //converts to string
alert(a.match(/.{1,3}(?=(.{3})+(?!.))|.{1,3}$/g).join(","));

如果您愿意,可以将其包装成一个函数:

function baz(a) {
    a = a + "";
    return a.match(/.{1,3}(?=(.{3})+(?!.))|.{1,3}$/g).join(",");
}

用法为baz(1234);,并将为我们返回一个字符串。

虽然我确实赞扬你使用模式匹配算法,但实际上这可能更容易使用基本的字符串解析函数来实现,因为它看起来并不像看到匹配语句那样令人生畏。

function foo(bar) {
    charbar = (""+bar).split(""); //convert to a String
    output = "";
    for(x = 0; x < charbar.length; x++) { //work backwards from end of string
        i = charbar.length - 1 - x; //our index
        output = charbar[i] + output; //pre-pend the character to the output
        if(x%3 == 2 && i > 0) { //every 3rd, we stick in a comma, except if it is not the leftmost digit
            output = ',' + output;
        }
    }
    return output;
}

用法基本上是foo(1234);,产生1,234