Javascript 结果上的千位分隔符

Javascript 结果上的千位分隔符,javascript,chart.js2,Javascript,Chart.js2,这个脚本使Chart.js将数据添加到图形中,以便它在条形图上显示数据,但我想添加千位分隔符和货币符号。我用它来处理货币符号,但我不确定如何获得千分位 animation: { onComplete: function () { var ctx = this.chart.ctx; ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily, 'normal', Chart.defaults

这个脚本使Chart.js将数据添加到图形中,以便它在条形图上显示数据,但我想添加千位分隔符和货币符号。我用它来处理货币符号,但我不确定如何获得千分位

animation: {
onComplete: function () {
    var ctx = this.chart.ctx;
    ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily, 'normal', Chart.defaults.global.defaultFontFamily);
    ctx.fillStyle = "black";
    ctx.textAlign = 'center';
    ctx.textBaseline = 'bottom';

    this.data.datasets.forEach(function (dataset)
    {
        for (var i = 0; i < dataset.data.length; i++) {
            for(var key in dataset._meta)
            {
                var model = dataset._meta[key].data[i]._model;
                ctx.fillText("$ " + dataset.data[i], model.x, model.y - 5);
            }
        }
    });
}
动画:{
onComplete:函数(){
var ctx=this.chart.ctx;
ctx.font=Chart.helpers.fontString(Chart.defaults.global.defaultFontFamily,'normal',Chart.defaults.global.defaultFontFamily);
ctx.fillStyle=“黑色”;
ctx.textAlign='中心';
ctx.textb基线='底部';
this.data.datasets.forEach(函数(数据集)
{
对于(var i=0;i
}

有许多库(包括d3)可以帮助您格式化数字,但浏览器也有一个本地化的,可以处理货币,甚至可以处理IE11

const number=2350972467;
log(number.toLocaleString());
log(number.tolocalString(navigator.language,{style:'currency',currency:'USD'}))试试看


好的,我终于通过反复试验解决了。。。这是我改变的

var model = dataset._meta[key].data[i]._model;
var salestotal = dataset.data[i];
if(parseInt(salestotal) >= 1000){
   salestotal2 = salestotal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
  salestotal2 = salestotal;
}
ctx.fillText("$ " + salestotal2, model.x, model.y - 5);

我将两行更改为:
var model=dataset.\u meta[key].data[I]。\u model;var salestotal=dataset.data[i];ctx.fillText(“R”+salestotal.toString().replace(/\B(?=(\d{3})+(?!\d))/g,”,”,model.x,model.y-5)。但它只对第一项数据起作用。它没有对其他数据项重复它。。。
var model = dataset._meta[key].data[i]._model;
var salestotal = dataset.data[i];
if(parseInt(salestotal) >= 1000){
   salestotal2 = salestotal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
  salestotal2 = salestotal;
}
ctx.fillText("$ " + salestotal2, model.x, model.y - 5);