数组中的对象判断里面的内容

// 有一个数组
let list = [
    {treat_date: "2021-04-20", time_segment: "3"},
    {treat_date: "2021-04-20", time_segment: "2"},
    {treat_date: "2021-04-19", time_segment: "1"}
]
// 想吧他改成
let list =[
  {'treat_date': "2021-04-20", "time_segment":["3", "2"]},
  {"treat_date": "2021-04-19", "time_segment": "1"}
]


// 第一种方法
this.groupBy(list,'time_segment')
groupBy(list, name) {
	return list.reduce(function (acc, obj) {
	    var key = obj[name];
	    if (!acc[key]) {
	    	acc[key] = [];
	    }
	    acc[key].push(obj);
	    return acc;
	}, {});
},


// 	第二种方法
let obj ={}
list.forEach(elem => {
     if (obj[elem.treat_date]){
         Array.isArray(obj[elem.treat_date]) || ( obj[elem.treat_date] = [obj[elem.treat_date]] );
         obj[elem.treat_date].push(elem.time_segment)
     }else{
         obj[elem.treat_date] = elem.time_segment;
     }
 })
 // 第三总方法
 a.reduce((obj, value) => {
    let i = obj.findIndex(elem => elem.treat_date == value.treat_date)
    if(i == -1){
        obj.push(value);
    }else{
        Array.isArray(obj[i].time_segment) || ( obj[i].time_segment = [ obj[i].time_segment ] );
        obj[i].time_segment.push(value.time_segment)
    }
    return obj; 
}, [])



//最后确定
handlerDatas(arr) {
   let obj = {};
    arr.forEach(item => {
        let {treat_date} = item;
        if (!obj[treat_date]) {
            obj[treat_date] = {
                timeList: [],
                selectList: [], // 1,2,3
                appoint_ids: {}
            };
        };
        obj[treat_date].timeList.push(item.time_segment);
        obj[treat_date].appoint_ids[item.time_segment] = item.appoint_id;
    });
    return obj;
},
this.dataArrayList = this.handlerDatas(data.list);
this.doctorDataList = Util.clone({}, this.dataArrayList);
const time_segment_info = [];
var idmaps = {};
   for (var key in this.doctorDataList) {
       idmaps = this.doctorDataList[key]['appoint_ids'];
       this.doctorDataList[key].selectList &&
           this.doctorDataList[key].selectList.forEach(x => {
               time_segment_info.push({
                   treat_date: key,
                   time_segment: x,
                   id: idmaps[x],
               });
           });
   };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值