关于js中 字符串类型的数字 转换成标准格式的货币类型
问题描述:
let obj = {
aa: "1218.74",
bb: "10000001.23",
cc: "60000000001",
dd: "12223330000001",
}
转换成
let obj = {
aa: "1,218.74",
bb: "10,000,001.23",
cc: "60,000,000,001.00",
dd: "12,223,330,000,001.00",
}
注意区分逗号跟小数点 原本的数据有 带有小数点后面两位的 也有不带有的 现在想把他们统一转换成带有的 并且在小数点前面每隔3个数字加一个逗号 好像是用的toLocaleString() 但是这个方法只能对数字类型转换 可是我用pareint将字符串转换成数字之后 1218.74就变成了1218 帮帮忙呀
答
replace(/(\d)(?=(\d{3})+\.)/g, "$1,")
答
let num = 5262456.2158;
num = toMoney(num);
console.log(num);//打印结果 5,262,456.22
//将数字转换成金额显示
function toMoney(num){
num = num.toFixed(2);
num = parseFloat(num)
num = num.toLocaleString();
return num;
}
答
Object.entries({
aa: "1218.74",
bb: "10000001.23",
cc: "60000000001",
dd: "12223330000001",
}).reduce((p, [key, val]) => ({ ...p, [key]: val.replace(/(?<=\d{1,2})(?=(\d{3})+(?:.\d+)?$)/g, ',') }), {})