后端返回数据结构:
let data = [
{
time:'2022-12-23 07:00:00',
dataValue: 0,
stationId: "21091301000",
stationName: "珠江路吴都路交叉路口"
},
{
time:'2022-12-23 07:10:00',
dataValue: 0,
stationId: "21091301000",
stationName: "珠江路吴都路交叉路口"
},
{
time:'2022-12-23 07:20:00',
dataValue: 0,
stationId: "21091301000",
stationName: "珠江路吴都路交叉路口"
},
{
time:'2022-12-23 07:00:00',
dataValue: 0,
stationId: "21091303000",
stationName: "兴昌路旺庄路交叉路口"
},
{
time:'2022-12-23 07:10:00',
dataValue: 0,
stationId: "21091303000",
stationName: "兴昌路旺庄路交叉路口"
},
{
time:'2022-12-23 07:20:00',
dataValue: 0,
stationId: "21091303000",
stationName: "兴昌路旺庄路交叉路口"
},
]
需要展示效果:
代码实现:
const dataSource = ref([]); // 表格数据源
const columns = ref([
{
title: '站点',
dataIndex: 'stationName',
key: 'stationName',
}
]); // 表格列
let timeList = [];
let idArray = [];
let newAarray = [];
data.forEach(function (item, i) {
if (idArray.indexOf(data[i].stationId) === -1) {
newAarray.push({
stationId: data[i].stationId,
stationName: data[i].stationName,
times: [data[i].time],
values: [data[i].dataValue],
});
idArray.push(data[i].stationId);
} else {
newAarray.forEach(function (ele, k) {
if (newAarray[k].stationId == data[i].stationId) {
newAarray[k].times.push(data[i].time); //把具有相同id的times值进行合并
newAarray[k].values.push(data[i].dataValue); //把具有相同id的values值进行合并
}
});
}
});
newAarray.forEach((item) => {
item.times.forEach((items, i) => {
for (const key in item) {
item[items] = item.values[i];
}
});
});
console.log(newAarray);
timeList = newAarray[0].times;
console.log(timeList);
timeList.forEach((item) => {
columns.value.push({
title: item,
dataIndex: item,
key: item,
});
});
dataSource.value = newAarray;