JSFiddle - React, Tailwind, and code Playground
JavaScript
var json;
$.getJSON('https://api.github.com/gists/2973986').done(function (data) {
json = data.files["Common-Currency.json"].content;
json = JSON.parse(json);
console.log(lavarDinheiro('USD', 25500));
console.log(lavarDinheiro('USD', 25500.234));
console.log(lavarDinheiro('USD', '25500,234'));
});
function lavarDinheiro(moeda, valor) {
if (typeof valor != 'number') return false; // para garantir que o input Ă© um numero
valor = ('' + valor).replace(',', '.');
valor = ('' + valor).split('.');
var parteInteira = valor[0] + '';
var parteDecimal = valor[1];
// tratar a parte inteira
var rx = /(\d+)(\d{3})/;
parteInteira = parteInteira.replace(/^\d+/, function (w) {
while (rx.test(w)) {
w = w.replace(rx, '$1.$2');
}
return w;
});
// tratar a parte decimal
var formatoDecimal = json[moeda].decimal_digits;
if (parteDecimal) parteDecimal = parteDecimal.slice(0, formatoDecimal);
else if (!parteDecimal && formatoDecimal) {
parteDecimal = '';
while (parteDecimal.length < formatoDecimal) {
parteDecimal = '0' + parteDecimal;
}
}
return parteDecimal ? [parteInteira, parteDecimal].join(',') : parteInteira;
}