在做金额格式化的时候用到了 Number.prototype.toLocaleString 这个方法,但是在一些老版本的浏览器中会出现兼容问题
var a = 10000000;
a.toLocaleString();
// chrome 68 "10,000,000"
// 搜狗浏览器 7.5.5 "10,000,000.000"
搜狗 7.5.5 多了 .000
原来的格式化函数(格式化千分位且保留两位小数)
formatAmount: function (amount) { // 金额千位格式化
if (typeof amount === 'undefined' || amount === '') return '';
if (amount - 0 === 0) return '0.00';
let num = amount - 0;
let str = (num-0).toFixed(2); // 保留两位小数
let num_int = str.split('.')[0];
let num_point = str.split('.')[1];
return `${(num_int-0).toLocaleString()}.${num_point}`;
}
兼容后
formatAmount: function (amount) { // 金额千位格式化
if (typeof amount === 'undefined' || amount === '') return '';
if (amount - 0 === 0) return '0.00';
let num = amount - 0;
let str = (num-0).toFixed(2); // 保留两位小时
let num_int = (str.split('.')[0] - 0).toLocaleString();
let num_point = str.split('.')[1];
return `${num_int.indexOf('.')>-1?num_int.split('.')[0]:num_int}.${num_point}`;
}
搜狗 7.5.5 的内核版本是 Chromium 49.0.2623
根据MDN显示是支持这个方法的。那这种兼容性该怎么判断?方法可以用但是返回的结果不同。