JavaScript 一个集合中根据某个相同的属性进行重新分组

代码:

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`对象中,以便后续判断是否已经处理过该医生姓名。

通过这段代码,最终会生成一个按医生姓名分组的数据结构,其中每个医生姓名对应一个对象,对象中包含该医生的所有数据。

运行结果:

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值