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;
}