Как динамически вызывать функцию с циклом for в Chart.js (JS) - PullRequest
0 голосов
/ 28 января 2019

У меня проблема: я использую 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]),

но это не работает

Спасибо!

1 Ответ

0 голосов
/ 28 января 2019

Этот цикл for никогда не выходит за рамки первой итерации, поскольку тело содержит return.Чтобы вернуть массив, полученный в результате всех итераций, создайте переменную массива, нажмите на нее в цикле, а затем верните этот массив ...

        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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...