js 将对象列表转换成想要的对象数组,数组重构

在这里插入图片描述
这种格式转换成下面这种在这里插入图片描述

let arr = [{
    
    
                profession: "专业1",
                work_type: "工种1",
                train_time: "2020/10/26-2020/10/26"
            },
                {
    
    
                    profession: "专业1",
                    work_type: "工种1",
                    train_time: "2020/10/27-2020/10/27"
                },
                {
    
    
                    profession: "专业1",
                    work_type: "工种3",
                    train_time: "2020/10/26-2020/10/26"
                },
                {
    
    
                    profession: "专业1",
                    work_type: "工种3",
                    train_time: "2020/10/27-2020/10/27"
                },
                {
    
    
                    profession: "专业2",
                    work_type: "工种2",
                    train_time: ""
                }]
            let arr2 = []
            let arr3=[]
            for (let i = 0; i < arr.length; i++) {
    
    
                if (arr2.length==0) {
    
    
                    //第一条
                    console.log("2")
                    arr2.push({
    
    
                        profession: arr[i].profession,
                        work_type: arr[i].work_type,
                        workType: [{
    
    
                            workTypeName: arr[i].work_type,
                            workTime:[]
                        }]
                        })
                    //时间为空
                    if(arr[i].train_time.indexOf("-")>-1){
    
    
                        arr2[i].workType[0].workTime.push({
    
    trainStartTime:arr[i].train_time.split("-")[0],trainEndTime:arr[i].train_time.split("-")[1]})
                    }

                }else{
    
    
                //    遍历arr2
                    console.log("3")
                   for(let j=0;j<arr2.length;j++){
    
    
                       if(arr2[j].profession.indexOf(arr[i].profession)>-1){
    
    
                           if(arr2[j].work_type.indexOf(arr[i].work_type)>-1){
    
    
                               //相同 插时间
                               if(arr[i].train_time.indexOf("-")>-1){
    
    
                                   //插第几条
                                   for (let k=0;k<arr2[j].workType.length;k++){
    
    
                                       if(arr2[j].workType[k].workTypeName==arr[i].work_type){
    
    
                                           arr2[j].workType[k].workTime.push({
    
    trainStartTime:arr[i].train_time.split("-")[0],trainEndTime:arr[i].train_time.split("-")[1]})
                                       }
                                   }

                               }
                           }else{
    
    
                               //插type
                               arr2[j].workType.push({
    
    
                                   workTypeName: arr[i].work_type,
                                   workTime:[]
                               })
                               if(arr[i].train_time.indexOf("-")>-1){
    
    
                                   arr2[j].workType[arr2[j].workType.length-1].workTime.push({
    
    trainStartTime:arr[i].train_time.split("-")[0],trainEndTime:arr[i].train_time.split("-")[1]})
                               }
                               // arr2[j].workType.concat(arr[i].work_type)
                               arr2[j].work_type=arr2[j].work_type+','+arr[i].work_type
                           }
                           console.log(j)
                       }else{
    
    
                           //没有这条
                           console.log("通天塔")
                           arr3.push({
    
    
                               profession: arr[i].profession,
                               work_type: arr[i].work_type,
                               workType: [{
    
    
                                   workTypeName: arr[i].work_type,
                                   workTime:[]
                               }]
                           })
                           //时间为空
                           console.log(arr2)
                           if(arr[i].train_time.indexOf("-")>-1){
    
    
                               console.log("不为空")
                               arr2[arr2.length-1].workType[0].workTime.push({
    
    trainStartTime:arr[i].train_time.split("-")[0],trainEndTime:arr[i].train_time.split("-")[1]})
                           }
                       }
                   }
                }
            }
            console.log(arr.length,arr2.concat(arr3))

猜你喜欢

转载自blog.csdn.net/yxgd_1442962728/article/details/109313735
今日推荐