代码:
var list = [{"ysxm00":"张三/20218","yysj00":"2024-03-07 00:00:00"},
{"ysxm00":"张三/20218","yysj00":"2024-03-10 00:00:00"},
{"ysxm00":"张三/20218","yysj00":"2024-03-11 00:00:00"},
{"ysxm00":"李四/28821","yysj00":"2024-03-07 00:00:00"},
{"ysxm00":"李四/28821","yysj00":"2024-03-10 00:00:00"}];
var dest = [];
var map = {};
for(var i = 0; i < list.length; i++){
var ai = list[i];
if(!map[ai.ysxm00]){
dest.push({
ysxm00: ai.ysxm00,
data: [ai]
});
map[ai.ysxm00] = ai;
}else{
for(var j = 0; j < dest.length; j++){
var dj = dest[j];
if(dj.ysxm00 == ai.ysxm00){
dj.data.push(ai);
break;
}
}
}
}
代码解释:
这段代码是一个JavaScript代码片段,它的功能是将一个包含医生姓名和预约时间的列表根据医生姓名进行分组。具体解释如下:
1. 首先,定义了一个包含医生姓名和预约时间的列表`list`。
2. 声明了一个空数组`dest`,用于存储最终结果。
3. 声明了一个空对象`map`,用于记录已经处理过的医生姓名,以及其对应的数据。
4. 使用`for`循环遍历列表`list`。
5. 对于每个元素`ai`,检查`map`对象中是否已经存在该医生姓名`ai.ysxm00`。
6. 如果不存在,将该医生姓名添加到`dest`数组中作为一个新的对象,该对象包含医生姓名和一个数据数组,数据数组中包含当前元素`ai`。
7. 否则,遍历`dest`数组,查找与当前元素医生姓名相匹配的对象,将当前元素`ai`添加到该对象的数据数组中。
8. 最后,将处理过的医生姓名记录在`map`对象中,以便后续判断是否已经处理过该医生姓名。
通过这段代码,最终会生成一个按医生姓名分组的数据结构,其中每个医生姓名对应一个对象,对象中包含该医生的所有数据。
运行结果: