将Javascript函数格式化为货币

将Javascript函数格式化为货币,javascript,Javascript,我有一个脚本,我在其中传递一个字符串,它将返回格式为美元的字符串。因此,如果我发送10000,它将返回10000.00美元,现在的问题是,当我发送1000000$100万时,它返回1000.00美元,因为它只是基于一组零进行解析。这是我的脚本,我如何调整它来解释两组0$100万 String.prototype.formatMoney = function(places, symbol, thousand, decimal) { if((this).match(/^\$/) &&

我有一个脚本,我在其中传递一个字符串,它将返回格式为美元的字符串。因此,如果我发送10000,它将返回10000.00美元,现在的问题是,当我发送1000000$100万时,它返回1000.00美元,因为它只是基于一组零进行解析。这是我的脚本,我如何调整它来解释两组0$100万

String.prototype.formatMoney = function(places, symbol, thousand, decimal) {
if((this).match(/^\$/) && (this).indexOf(',') != -1 && (this).indexOf('.') != -1) {
    return this;
}
    places = !isNaN(places = Math.abs(places)) ? places : 2;
    symbol = symbol !== undefined ? symbol : "$";
    thousand = thousand || ",";
    decimal = decimal || ".";
var number = Number(((this).replace('$','')).replace(',','')), 
    negative = number < 0 ? "-" : "",
    i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
    j = (j = i.length) > 3 ? j % 3 : 0;
return negative + symbol + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : ""); };

提前感谢您提供任何有用的信息

试一试,它会寻找小数点分隔符,但如果您愿意,可以删除该部分:

function formatMoney(number) {
  return number.toLocaleString('en-US', { style: 'currency', currency: 'USD' });
}

console.log(formatMoney(10000));   // $10,000.00
console.log(formatMoney(1000000)); // $1,000,000.00
{ 数字=数字; //如果数字是以下任意一项,则将其设置为0并返回 如果是Nannan号码{ 返回'0'+'{!小数分隔符}'+'00'; } number=Math.roundnumber*100/100;//四舍五入到小数点后两位的数字 var numberString=number.toString; numberString=numberString.replace'.','{!小数分隔符}'; var loc=numberString.lastIndexOf'{!小数分隔符}';//获取小数分隔符的位置 如果loc!=-1&&numberString.length-2==loc{ //如果小数点后只有一位数字,则向数字添加一个0 numberString+='0'; }如果loc==1 | | loc==0,则为else{ //如果数字没有小数点分隔符,则添加一个小数点分隔符和两个00 numberString+='{!小数分隔符}'+'00'; } loc=numberString.lastIndexOf'{!decimalSeparator}';//获取十进制分隔符id的位置添加0后会发生更改 var newNum=numberString.substrloc,3; //每3位数字后添加千位分隔符的逻辑 var计数=0; 对于变量i=loc-1;i>=0;i-{ 如果计数!=0&&count%3==0{ newNum=numberString.substri,1+'{!千分之}'+newNum; }否则{ newNum=numberString.substri,1+newNum; } 计数++; } //如果愿意,请返回newNum
};使用循环。无论何时需要重复代码,都要使用循环。一般来说:这是一个非常常见的事情,可能存在一个API或库,您应该使用它,而不是重新发明这个特定的轮子。