我在显示一年中的正确月份时遇到问题。问题在于,几个月之间彼此没有跟进。我似乎无法正确执行算法。
我现在遇到的问题是,这几个月之间彼此无法正确跟踪。与其说“ Jan-Feb-Mar-Dec”,不如说“ Dec-Jan-Feb-Mar”:
这是我在这一点上的算法。当不同年份的月份重叠时,我无法确定如何正确地排列月份。新年的月份是数组开始的月份:
visibleMonths() {
let oldestMonth = 0;
this.months.forEach(month => {
if (month.visible && month.value > oldestMonth)
oldestMonth = month.value;
});
if (oldestMonth + 4 > 11) {
let visibleMonths = [];
// ORDER THE MONTHS
} else {
return this.months.filter(month => month.visible === true);
}
}
months: [
{ name: "Jan", value: 0, active: false, visible: false },
{ name: "Feb", value: 1, active: false, visible: false },
{ name: "Mar", value: 2, active: false, visible: false },
{ name: "Apr", value: 3, active: false, visible: false },
{ name: "Mei", value: 4, active: false, visible: false },
{ name: "Jun", value: 5, active: false, visible: false },
{ name: "jul", value: 6, active: false, visible: false },
{ name: "Aug", value: 7, active: false, visible: false },
{ name: "Sep", value: 8, active: false, visible: false },
{ name: "Okt", value: 9, active: false, visible: false },
{ name: "Nov", value: 10, active: false, visible: false },
{ name: "Dec", value: 11, active: false, visible: false }
],
您可以简单地移动源数组并将其附加到临时数组中,slice
然后再执行以下操作:
const months = [
{ name: "Jan", value: 0, active: false, visible: false },
{ name: "Feb", value: 1, active: false, visible: false },
{ name: "Mar", value: 2, active: false, visible: false },
{ name: "Apr", value: 3, active: false, visible: false },
{ name: "Mei", value: 4, active: false, visible: false },
{ name: "Jun", value: 5, active: false, visible: false },
{ name: "jul", value: 6, active: false, visible: false },
{ name: "Aug", value: 7, active: false, visible: false },
{ name: "Sep", value: 8, active: false, visible: false },
{ name: "Okt", value: 9, active: false, visible: false },
{ name: "Nov", value: 10, active: false, visible: false },
{ name: "Dec", value: 11, active: false, visible: false }
]
const currentMonthIndex = new Date().getMonth()
function getVisibleMonths(months, currentMonthIndex) {
const tmp = [...months]
const res = []
for (i = 0; i < currentMonthIndex; i++) {
res.push(tmp.shift())
}
return [...tmp, ...res].slice(0, 4)
}
console.log(getVisibleMonths(months, currentMonthIndex))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句