Получить имя за последние 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
}
Преимущество этого подхода заключается в том, что вы можете изменить язык, изменив параметр локали. Или оставьте его как неопределенное, чтобы выводить месяцы в соответствии с местным часовым поясом и локалью по умолчанию.