getChartData() {
let myDate = new Date();
let year = myDate.getFullYear();
let month = myDate.getMonth();
month = month < 10 ? "0" + month : month;
let years = year + "-" + month;
let params = {
years: "2021-04", communityId: "1371335100698337281" };
this.$http
.request("deliveryStatisticalDay", params)
.then((data) => {
console.log(data);
let chartData = data.data;
let obj = {
};
let dat = chartData;
for (let i = 0; i < chartData.length; i++) {
if (!obj[chartData[i].years]) {
obj[chartData[i].years] = {
day: chartData[i].years.split("-")[2],
tarshg: "",
trashs: "",
trashk: "",
};
}
}
console.log(obj);
this.getDat(obj, dat);
})
.catch((err) => {
});
},
//一上来就获取本月数据
getDat(obj, dat) {
// console.log(obj,dat);
for (let i = 0; i < dat.length; i++) {
if (obj[dat[i].years] && dat[i].trashName == "干垃圾") {
obj[dat[i].years].tarshg = dat[i].weight;
} else if (obj[dat[i].years] && dat[i].trashName == "湿垃圾") {
obj[dat[i].years].trashs = dat[i].weight;
} else if (obj[dat[i].years] && dat[i].trashName == "可回收垃圾") {
obj[dat[i].years].trashk = dat[i].weight;
} else {
obj[dat[i].years].tarshg = "0";
obj[dat[i].years].trashs = "0";
obj[dat[i].years].trashk = "0";
}
}
// console.log(obj);
let arr = [];
for (let i in obj) {
arr.push(obj[i]);
}
let nowd = new Date();
let tYear = nowd.getFullYear();
let tMonth = nowd.getMonth()+1;
let mydays = new Date(tYear, tMonth, 0).getDate();
// console.log(arr);
//这里是获取新的处理数据的方法
//每月缺失的天数自动补齐,数据都为0
let arrd = [];
for (let i = 1; i <= mydays; i++) {
let dayNum = i < 10 ? "0" + i : String(i);
arrd[i - 1] = {
day: dayNum,
tarshg: "0",
trashs: "0",
trashk: "0",
};
for (let j in arr) {
if (arr[j].day == dayNum) {
arrd[i - 1] = arr[j];
}
}
}
//数据处理结束
let arr1 = [];
let arr2 = [];
let arr3 = [];
let arr4 = [];
for (let i = 0; i < arrd.length; i++) {
arr1.push(arrd[i].day);
arr2.push(arrd[i].tarshg);
arr3.push(arrd[i].trashs);
arr4.push(arrd[i].trashk);
}
this.chartOptions.xAxis.categories = arr1;
this.chartOptions.series[0].data = arr2.map(Number);
this.chartOptions.series[1].data = arr3.map(Number);
this.chartOptions.series[2].data = arr4.map(Number);
},
这样的数据:0-31,把没有的日期补齐
核心代码:
let arrd = [];
for (let i = 1; i <= mydays; i++) {
let dayNum = i < 10 ? "0" + i : String(i);
arrd[i - 1] = {
day: dayNum,
tarshg: "0",
trashs: "0",
trashk: "0",
};
for (let j in arr) {
if (arr[j].day == dayNum) {
arrd[i - 1] = arr[j];
}
}
}
操作后数据: