【发布时间】:2018-06-27 22:41:57
【问题描述】:
我正在使用 chartjs-plugin-datalabels 在每个图表数据集上方永久显示数据标签。我在每个图表脚本中使用了以下代码以美元显示货币金额:
plugins: {
datalabels: {
formatter: function(value, context) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
}
}
然后输出到:$#,###,###
为了节省空间,我如何重写这段代码以缩写形式显示上述金额:$#.#m。第一个逗号变成小数点,其余整数四舍五入。
因此,数十亿人将拥有 B,数百万人拥有 M,数千人拥有K,等等...
例子:
$10,500,000,000 --> $10.5b
$1,500,000,000 --> $1.5b
10,500,00 美元 --> 1050 万美元
1,500,000 美元 --> 150 万美元
$10,500 --> $10.5k
$1,500 --> $1.5k
.replace() 部分的细分也将不胜感激。
【问题讨论】:
-
如果你致力于一个单行正则表达式,我认为它可以做到,但最好只写一个简单的函数:将字符串转换为数字并除以 1000,直到它太小并且求单位 (k, m, b)
-
如果可以的话,我想把它保留为一行表达式
-
@Halcyon 你有一个简单函数的例子吗?我可以在你的第一条评论中使用吗?我可以很好地编辑 javascript,但对于从头开始编写来说并不多。
标签: javascript formatting chart.js currency