2011-12-29 73 views
1

我尝试下面的代码,但不起作用触发一个错误:创建功能正常数字格式?

val.reverse is not a function 

我怎样才能解决呢?

演示:http://jsfiddle.net/9ysZa/

//I want this output: 1,455,000 
function num(val){ 
     var result = val.reverse().join("") 
          .match(/[0-9]{1,3}/g).join(",") 
          .match(/./g).reverse().join(""); 
    return result  
} 
alert(num('1455000')) 
+0

可能重复(http://stackoverflow.com/questions/4942103/comma-formated-numbers-in-jquery) – 2011-12-29 18:23:20

回答

3

DEMO

reverseArray.prototype - 它与阵列的工作原理的方法。由于val是一个字符串,因此您需要致电val.split('')将其放入数组中。

function num(val){ 
     var result = val.split('').reverse().join("") 
          .match(/[0-9]{1,3}/g).join(",") 
          .match(/./g).reverse().join(""); 
    return result  
} 
alert(num('1455000')); 

哪个提醒您正在查找的结果。

编辑

基于您的评论,它看起来像你想在 1455000而非“1455000”运行此。如果是这样,在split()之前添加toString呼叫将会起作用(并且将对字符串**和数字都起作用)。

这里的[jQuery的逗号格式化后的数字]的updated fiddle

+0

我对自己的代码获得这个错误:'未捕获的TypeError:对象1455000没有方法'split''如何修复它? – 2011-12-29 18:33:20

+0

为了安全起见,添加'toString()':'var result = val.toString()。split(“”)。reverse()。join(“”)。match(/ [0-9] {1,3} /g).join(“,”)。split(“”)。reverse()。join(“”);' – 2011-12-29 18:36:02

+0

@KateWintz - 参见更新:) – 2011-12-29 18:36:15