Javascript 将Chart.JS数据元素格式化为货币
我发现可以通过一个快速JavaScript回调函数将Chart.JS的x轴或y轴格式化为货币Javascript 将Chart.JS数据元素格式化为货币,javascript,jquery,json,chart.js,Javascript,Jquery,Json,Chart.js,我发现可以通过一个快速JavaScript回调函数将Chart.JS的x轴或y轴格式化为货币 callback: function(value, index, values) { if (parseInt(value) >= 1000) { return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } else { return '$' + value;
callback: function(value, index, values) {
if (parseInt(value) >= 1000) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return '$' + value;
}
}
}
但数据的情况似乎并非如此:
在我的实例中,这是一个包含数值的JavaScript 1D数组,我想在适当的地方添加一个美元符号和逗号。如何将其添加到Charts.jS中
编辑这就是我填充JSON数组的方式,我想格式化
data:values
var barChartData = {
labels: labelsarr,
datasets: [{
label: 'Amount',
backgroundColor: 'rgba(200, 200, 200, 0.75)',
borderColor: 'rgb(255, 99, 132)',
borderWidth: 1,
data: values
}]
};
JSON数组的格式是[“AAAA”,1001000023124420,30500004000070000700700082200923209232001111]
我想从索引[1]
开始格式化以显示美元和货币。如何做到这一点
第二次编辑时间我尝试使用下面的语法添加标题,并将数据点和左轴格式化为货币,但这不再在我的页面上显示任何内容
var ctx = document.getElementById('canvas').getContext('2d');
var chart = new Chart(ctx, {
type: 'bar',
data: {
labels: labelsarr,
datasets: [{
label: 'Test',
data: values,
backgroundColor: 'rgba(0, 119, 204, 0.8)',
}]
},
options: {
responsive: true,
scales: {
yAxes: [{
ticks: {
beginAtZero: true,
callback: function(value, index, values) {
if (parseInt(value) >= 1000) {
return '$' + value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return '$' + value;
}
}
}
}]
},
legend: {
position: 'top',
},
title: {
display: true,
text: '<?php echo $name ?> Test'
}
tooltips: {
callbacks: {
label: function(t, d) {
var xLabel = d.datasets[t.datasetIndex].label;
var yLabel = t.yLabel >= 1000 ?
'$' + t.yLabel.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") :
'$' + t.yLabel;
return xLabel + ': ' + yLabel;
}
}
}
}
});
var ctx=document.getElementById('canvas').getContext('2d');
var图表=新图表(ctx{
类型:'bar',
数据:{
标签:labelsarr,
数据集:[{
标签:“测试”,
数据:价值观,
背景颜色:“rgba(0,119,204,0.8)”,
}]
},
选项:{
回答:是的,
比例:{
雅克斯:[{
滴答声:{
贝吉纳泽罗:是的,
回调:函数(值、索引、值){
如果(parseInt(值)>=1000){
返回“$”+value.toString()。替换(/\B(?=(\d{3})+(?!\d))/g,“,”;
}否则{
返回“$”+值;
}
}
}
}]
},
图例:{
位置:'顶部',
},
标题:{
显示:对,
文本:“测试”
}
工具提示:{
回调:{
标签:功能(t,d){
var xLabel=d.datasets[t.datasetIndex].label;
var yLabel=t.yLabel>=1000?
“$”+t.yLabel.toString()。替换(/\B(?=(\d{3})+(?!\d))/g,”,”:
“$”+t.yLabel;
返回xLabel+':'+yLabel;
}
}
}
}
});
这可以使用以下工具提示标签回调函数实现
tooltips: {
callbacks: {
label: function(t, d) {
var xLabel = d.datasets[t.datasetIndex].label;
var yLabel = t.yLabel >= 1000 ? '$' + t.yLabel.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '$' + t.yLabel;
return xLabel + ': ' + yLabel;
}
}
}
ᴡᴏʀᴋɪɴɢ ᴇxᴀᴍᴘʟᴇ强>
var labelsarr=['A','B','C','D','E','F','G','H','I','J','K','L','M'];
var值=[“AAAA”、100、10000、2310、24420、30、50000、400000、70000、700、823200、923200、1111];
var ctx=document.getElementById('canvas').getContext('2d');
var图表=新图表(ctx{
类型:'bar',
数据:{
标签:labelsarr,
数据集:[{
标签:“金额”,
数据:价值观,
背景颜色:“rgba(0,119,204,0.8)”,
}]
},
选项:{
工具提示:{
回调:{
标签:功能(t,d){
var xLabel=d.datasets[t.datasetIndex].label;
var yLabel=t.yLabel>=1000?'$'+t.yLabel.toString()。替换(/\B(?=(\d{3})+(?!\d))/g,“,”:'$'+t.yLabel;
返回xLabel+':'+yLabel;
}
}
},
比例:{
雅克斯:[{
滴答声:{
回调:函数(值、索引、值){
如果(parseInt(值)>=1000){
返回“$”+value.toString()。替换(/\B(?=(\d{3})+(?!\d))/g,“,”;
}否则{
返回“$”+值;
}
}
}
}]
}
}
});代码>
这有什么问题吗?它工作得很好@ℊααnd-我编辑我的帖子->以进一步说明JSON数组是如何设置的@ℊααnd-将左轴格式化为货币,我已经用我发布的第一个函数完成了。我想将数据点格式化为货币,因此当您将鼠标悬停在条形图上时,它显示的是货币格式的金额。例如,如果您将鼠标悬停在其中一个字母上,我希望它显示以货币格式化的金额。它目前只显示一个直数字字符串。这删除了我在左侧的格式设置。我希望左侧和数据点具有货币格式。然后保留y轴刻度的prev函数。。这是用于工具提示而不是y轴勾选查看我的编辑。我试图修改语法,但现在我的页面上没有显示任何内容。您在关闭标题属性},
后错过了逗号,