我有一个问题: 我正在使用chart.js,并且尝试使用 for循环进行迭代,并在每个循环上调用不同的函数。
这是我的意思:
那是我的功能:
const courbeSatisfactionserv = document.getElementById("courbe-satisfaction-service-chart");
if (courbeSatisfactionserv) {
const courbe_satisfaction_serv = new Chart(courbeSatisfactionserv, {
type: 'line',
data: {
labels: createLabelsCourbe(date),
datasets: function() {
for (let i = 0; i < (courbeSatisfactionserv.dataset.size); i++) {
return {
datalabels: {
display: false,
},
label: JSON.parse(courbeSatisfactionserv.dataset.?),
data: JSON.parse(courbeSatisfactionserv.dataset.?),
fill: false,
borderColor: '#442B48',
backgroundColor: '#442B48',
borderWidth: 2
}
}
}
},
options: {
scales: {
xAxes: [{
gridLines: {
display: false
}
}],
yAxes: [{
ticks: {
suggestedMin: 0,
suggestedMax: 10
},
gridLines: {
drawBorder: false,
display: false
}
}]
}
}
});
}
我想做的是让data
和label
基本上这样称呼:
label: JSON.parse(courbeSatisfactionserv.dataset.points_lab_0),
data: JSON.parse(courbeSatisfactionserv.dataset.points_0),
对于第一次迭代,points_lab_1
和points_1
对于第二次迭代,依此类推...
我尝试过:
label: JSON.parse(courbeSatisfactionserv.dataset.this["points_lab_"+i]),
data: JSON.parse(courbeSatisfactionserv.dataset.this["points_"+i]),
但这不起作用
谢谢!
答案 0 :(得分:0)
因为主体包含一个return
,所以for循环永远不会超出第一次迭代。要返回所有迭代产生的数组,请创建一个数组变量,将其推送到循环中,然后返回该数组...
datasets: function() {
let labelObjects = [];
let dataset = courbeSatisfactionserv.dataset; // easier on the eyes
for (let i = 0; i < (dataset.size); i++) {
let labelObject = {
datalabels: {
display: false,
},
label: JSON.parse(dataset[`points_lab_${i}`]),
data: JSON.parse(dataset[`points_${i}`]),
fill: false,
borderColor: '#442B48',
backgroundColor: '#442B48',
borderWidth: 2
}
labelObjects.push(labelObject);
}
return labelObjects;
}