Создать функцию нормального форматирования чисел? - PullRequest
1 голос
/ 29 декабря 2011

Я попробовал следующий код, но не работает вызывает ошибку:

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'))

1 Ответ

3 голосов
/ 29 декабря 2011

DEMO

reverse - это метод для Array.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'));

Что сообщает о результатах, которые вы ищете.

EDIT

Исходя из вашего комментария, похоже, что вы хотите запустить это на число 1455000, а не на строку '1455000'. Если это так, добавление вызова toString до split() будет работать (и будет работать как для строк **, так и для чисел).

Вот обновленная скрипка

...