在开发过程中,接口对接不好的情况下数据结构与所需不符合是非常容易出现的问题,数据分组也是常有的事。
// 原数组
const data: any = [
{ CreateTime: "2019-09-11 09:47:43", ItemID: 1442, Operator1Code: "sa", Operator2Code: "0838", Opertor1: "1", Opertor2: "1236", PlanID: "4417", PlanName: "模拟开关柜1-3送电", SwitchName: "模拟开关柜1#" },
{ CreateTime: "2019-09-11 09:47:43", ItemID: 1443, Operator1Code: "sa", Operator2Code: "0838", Opertor1: "1", Opertor2: "1236", PlanID: "4417", PlanName: "模拟开关柜1-3送电", SwitchName: "模拟开关柜2#", },
{ CreateTime: "2019-09-11 09:47:43", ItemID: 1444, Operator1Code: "sa", Operator2Code: "0838", Opertor1: "1", Opertor2: "1236", PlanID: "4417", PlanName: "模拟开关柜1-3送电", SwitchName: "模拟开关柜2#", }
]
// 目标数组
const cluster: any = [{
dataID: '4417',
dataItem[
{ CreateTime: "2019-09-11 09:47:43", ItemID: 1442, Operator1Code: "sa", Operator2Code: "0838", Opertor1: "1", Opertor2: "1236", PlanID: "4417", PlanName: "模拟开关柜1-3送电", SwitchName: "模拟开关柜1#" },
{ CreateTime: "2019-09-11 09:47:43", ItemID: 1443, Operator1Code: "sa", Operator2Code: "0838", Opertor1: "1", Opertor2: "1236", PlanID: "4417", PlanName: "模拟开关柜1-3送电", SwitchName: "模拟开关柜2#", },
{ CreateTime: "2019-09-11 09:47:43", ItemID: 1444, Operator1Code: "sa", Operator2Code: "0838", Opertor1: "1", Opertor2: "1236", PlanID: "4417", PlanName: "模拟开关柜1-3送电", SwitchName: "模拟开关柜2#", }
]
}]
方法:
function dataCluster(data: any): any { // 数据分组
const clusterItem: object = {};
const cluster: [] = [];
data.forEach(element => {
if (!clusterItem[element.PlanID]) {
cluster.push({
dataID: element.PlanID,
dataItem: [element]
} as never);
clusterItem[element.PlanID] = element;
} else {
cluster.forEach(ele => {
if ((ele as any).dataID === element.PlanID) {
(ele as any).dataItem.push(element);
}
});
}
});
return cluster;
}
//结果输出
console.log(dataCluster(data));
点赞、关注加收藏,我们一起学前端📚