根据数据中的月份对数据进行排序,月份为String类型。如“1月,2月,3月,11月,12月”
// 根据月份排序
monthSort(planList: any[]): any[] {
if (planList.length == 0) {
return [];
}
let plans;
let planOne;
let planTwo;
let planTwoTemp;
let planThree;
let planThreeTemp;
// 有当前月份
const isInArray = (arr, value) => {
for (let i = 0; i < arr.length; i++) {
if (value === arr[i]) {
return true;
}
}
return false;
}
// 比当前月份大
const isGreaterArray = (item, value) => {
const monthNumber = Number(value.slice(0, value.length - 1));
const imonths = item.months.split(",");
for (let i = 0; i < imonths.length; i++) {
let monthTemp = Number(imonths[i].slice(0, imonths[i].length - 1));
if (monthNumber < monthTemp) {
return true;
}
}
return false;
}
const presentMonth = new Date().getMonth() + 1 + "月";
// 过滤当前月
const filterIsInArray = (item, month) => {
const imonths = item.months.split(",");
return isInArray(imonths, month);
}
// 过滤出一个数组中与其他数组的差值
const repetition = (item, arr) => {
const arrids = [];
for (let i = 0; i < arr.length; i++) {
arrids.push(arr[i].id);
}
let i = arrids.length;
while (i--) {
if (arrids[i] === item.id) {
return false;
}
}
return true;
}
// 过滤出当前月
planOne = [...planList.filter(item => filterIsInArray(item, presentMonth))];
planTwoTemp = [...planList.filter(item => repetition(item, planOne))];
planTwo = [...planTwoTemp.filter(item => isGreaterArray(item, presentMonth))];
planThreeTemp = planOne.concat(planTwo);
planThree = [...planList.filter(item => repetition(item, planThreeTemp))];
plans = planThreeTemp.concat(planThree);
return plans;
}