Получить имя за последние 6 месяцев в массиве для Chartjs

Я пытался динамически получать имена последних шести месяцев в диаграмме js в качестве метки

 var profitChart = {
    labels: ***** last six months name,
    datasets: [
      {
        label: "Profit",
        backgroundColor: "rgba(58,181,74,0.3)",
        borderColor: "rgba(58,181,74,0.80)",
        pointRadius: false,
        pointColor: "rgba(210, 214, 222, 1)",
        pointStrokeColor: "#c1c7d1",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(220,220,220,1)",
        data: profitdata,
      },

2 ответа

Решение

Создайте массив с месяцами, используйте getMonth() объекта даты, чтобы получить текущий месяц и Array.slice() извлечь последние 6 месяцев.

let months=["January","February","March","April","June", "July", "August", "September", "October", "November", "December"];
let currentMonth=new Date().getMonth()
var profitChart = {
        labels:months.slice(currentMonth-6).concat(months.slice(0,currentMonth)),
        datasets: [
          {
            label: "Profit",
            backgroundColor: "rgba(58,181,74,0.3)",
            borderColor: "rgba(58,181,74,0.80)",
            pointRadius: false,
            pointColor: "rgba(210, 214, 222, 1)",
        pointStrokeColor: "#c1c7d1",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(220,220,220,1)",
        data: "profitdata",
      }]
      }
 console.log(profitChart)

Если кому-то нужны последние n месяцев, для любого положительного целого числа n вы можете сделать это:

      const getLastNMonths = n => {           
        const d = new Date();
        const currentMonth = d.getMonth();
        const locale = 'en-GB';

        let result = [];
        for (let i = n; i > 0; i--) {
            d.setMonth(currentMonth - i);
            result.push(d.toLocaleDateString(locale, { month: 'long' }));
        }
        return result;
    };

В случае ОП им нужно будет использовать getLastNMonths(6)как это

      var profitChart = {
    labels: getLastNMonths(6),
    //other properties
}

Преимущество этого подхода заключается в том, что вы можете изменить язык, изменив параметр локали. Или оставьте его как неопределенное, чтобы выводить месяцы в соответствии с местным часовым поясом и локалью по умолчанию.

Другие вопросы по тегам