将平级结构转换为树状结构 三级分类 根据时间相同的条件下 子节点的值下合并数组并按照时间进行排序

			let Patient = [{
					"ColumnId": "09:10-09:40",
					"RowId": "张三",
					"AppointInfo": "李四"
				},
				{
					"ColumnId": "10:20-10:50",
					"RowId": "张三",
					"AppointInfo": "李四1"
				},
				{
					"ColumnId": "08:00-08:30",
					"RowId": "张三",
					"AppointInfo": "李四2"
				},
				{
					"ColumnId": "11:30-12:00",
					"RowId": "张三",
					"AppointInfo": "李四3"
				},
				{
					"ColumnId": "16:30-17:00",
					"RowId": "张三27",
					"AppointInfo": "李四4"
				},
				{
					"ColumnId": "16:30-17:00",
					"RowId": "张三27",
					"AppointInfo": "李四43"
				},
				{
					"ColumnId": "16:30-17:00",
					"RowId": "张三27",
					"AppointInfo": "李四42"
				},
				{
					"ColumnId": "16:30-17:00",
					"RowId": "张三27",
					"AppointInfo": "李四41"
				},
				{
					"ColumnId": "15:55-16:25",
					"RowId": "张三26",
					"AppointInfo": "李四5"
				},
				{
					"ColumnId": "11:30-12:00",
					"RowId": "张三25",
					"AppointInfo": "李四67"
				},
				{
					"ColumnId": "11:30-12:00",
					"RowId": "张三25",
					"AppointInfo": "李四68"
				},
				{
					"ColumnId": "11:30-12:00",
					"RowId": "张三25",
					"AppointInfo": "李四69"
				},
				{
					"ColumnId": "11:30-12:00",
					"RowId": "张三25",
					"AppointInfo": "李四61"
				},
				{
					"ColumnId": "11:30-12:00",
		 		"RowId": "张三25",
					"AppointInfo": "李四62"
				},
				{
					"ColumnId": "09:45-10:15",
					"RowId": "张三24",
					"AppointInfo": "李四7"
				},
				{
					"ColumnId": "10:20-10:50",
					"RowId": "张三23",
					"AppointInfo": "李四8"
				},
				{
					"ColumnId": "16:30-17:00",
					"RowId": "张三22",
					"AppointInfo": "李四9"
				},
				{
					"ColumnId": "09:10-09:40",
					"RowId": "张三21",
					"AppointInfo": "李四10"
				},
				{
					"ColumnId": "08:00-08:30",
					"RowId": "张三20",
					"AppointInfo": "李四11"
				},
				{
					"ColumnId": "10:20-10:50",
					"RowId": "张三19",
					"AppointInfo": "李四12"
				},
				{
					"ColumnId": "14:05-14:35",
					"RowId": "张三18",
					"AppointInfo": "李四13"
				},
				{
					"ColumnId": "16:30-17:00",
					"RowId": "张三17",
					"AppointInfo": "李四14"
				},
				{
					"ColumnId": "08:35-09:05",
					"RowId": "张三16",
					"AppointInfo": "李四15"
				},
				{
					"ColumnId": "10:55-11:25",
					"RowId": "张三15",
					"AppointInfo": "李四16"
				},
				{
					"ColumnId": "15:55-16:25",
					"RowId": "张三14",
					"AppointInfo": "李四17"
				},
				{
					"ColumnId": "14:40-15:10",
					"RowId": "张三13",
					"AppointInfo": "李四18"
				},
				{
					"ColumnId": "14:05-14:35",
					"RowId": "张三12",
					"AppointInfo": "李四19"
				},
				{
					"ColumnId": "14:05-14:35",
					"RowId": "张三12",
					"AppointInfo": "李四191"
				},
				{
					"ColumnId": "14:05-14:35",
					"RowId": "张三12",
					"AppointInfo": "李四192"
				},
				{
		 		"ColumnId": "14:05-14:35",
					"RowId": "张三12",
					"AppointInfo": "李四193"
				},
				{
					"ColumnId": "14:40-15:10",
					"RowId": "张三11",
					"AppointInfo": "李四20"
				},
				{
					"ColumnId": "16:30-17:00",
					"RowId": "张三10",
					"AppointInfo": "李四21"
				},
				{
					"ColumnId": "08:35-09:05",
					"RowId": "张三9",
					"AppointInfo": "李四22"
				},
				{
					"ColumnId": "14:40-15:10",
					"RowId": "张三8",
					"AppointInfo": "李四23"
				},
				{
					"ColumnId": "14:40-15:10",
					"RowId": "张三7",
					"AppointInfo": "李四24"
				},
				{
					"ColumnId": "10:20-10:50",
					"RowId": "张三6",
					"AppointInfo": "李四25"
				},
				{
					"ColumnId": "10:20-10:50",
					"RowId": "张三6",
					"AppointInfo": "李四256"
				},
				{
					"ColumnId": "10:20-10:50",
					"RowId": "张三6",
					"AppointInfo": "李四257"
				},
				{
					"ColumnId": "10:20-10:50",
					"RowId": "张三6",
					"AppointInfo": "李四258"
				},
				{
					"ColumnId": "08:35-09:05",
					"RowId": "张三5",
					"AppointInfo": "李四26"
				},
				{
					"ColumnId": "15:20-15:50",
					"RowId": "张三4",
					"AppointInfo": "李四27"
				},
				{
					"ColumnId": "15:20-15:50",
					"RowId": "张三3",
					"AppointInfo": "李四28"
				},
				{
					"ColumnId": "15:20-15:50",
					"RowId": "张三3",
					"AppointInfo": "李四289"
				},
				{
					"ColumnId": "15:20-15:50",
					"RowId": "张三3",
					"AppointInfo": "李四281"
				},
				{
		 		"ColumnId": "15:20-15:50",
					"RowId": "张三3",
					"AppointInfo": "李四282"
				},
				{
					"ColumnId": "14:40-15:10",
					"RowId": "张三2",
					"AppointInfo": "李四29"
				},
				{
					"ColumnId": "14:05-14:35",
					"RowId": "张三1",
					"AppointInfo": "李四30"
				}
			];
			let dataInfo = {};
			
			Patient.forEach((item, index) => {
				let {
					ColumnId
				} = item;
				if (!dataInfo[ColumnId]) {
					dataInfo[ColumnId] = {
						ColumnId,
						data: []
					}
				}
				//按照时ColumnId时间相同的进行分类以及合并子节点进行分类
				dataInfo[ColumnId].data.push(item);
			});
			let listB = Object.values(dataInfo); // list 转换成功的数据
			

			listB.sort(function(a, b) {
				return a.ColumnId > b.ColumnId ? 1 : -1
			})
			//按照时间升序进行排序
			console.log(listB);

在这里插入图片描述

const list2 = [];
			//根据时间相同的条件下 RowId相同的值 将AppointInfo合并到子节点的userList
			listB.forEach(function(item1) { 
			    if (!list2.find(t=>t["ColumnId"]===item1["ColumnId"])){
			        list2.push({
			            'ColumnId': item1["ColumnId"],
						'data': []
			        })
			    }
				const item2 = list2.find(t=>t["ColumnId"]===item1["ColumnId"]);
				const data2 = item2['data'];
				item1['data'].forEach(function(data1){
					if (!data2.find(t=>t['RowId']===data1['RowId'])) {
						data2.push({
							'RowId': data1['RowId'],
							'userList': [],
						});
					}
					let u1 = data2.find(t=>t['RowId']===data1['RowId'])['userList'];
					if (!u1.find(t=>t['AppointInfo']===data1['AppointInfo'])) {
						u1.push({
							'AppointInfo': data1['AppointInfo']
						});
					}
				});
			});

console.log(list2);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值