vue 对象数组中,相邻的且相同类型和内容的数据合并,重组新的数组对象

在项目中,有时候会遇到一些需求,比如行程安排,或者考勤状态。后台返回的获取是这一周的每一天的状态,但是我们前端需求显示就是要把相邻的且状态相同的数据进行合并,所以我们就要重新组合返回的数据。如下所示:

       //后台返回的数据格式  (一周7天的状态)
       let data = [
           {"TYPE": "01", "REMARK": "休假"},
            {"TYPE": "03", "REMARK": "在班"},
            {"TYPE": "03", "REMARK": "在班"},
            {"TYPE": "02", "REMARK": "上海出差"},
            {"TYPE": "02", "REMARK": "北京出差"},
            {"TYPE": "04", "REMARK": "休息"},
            {"TYPE": "04", "REMARK": "休息"}
        ]
         
        let newdata = []
        let index = 1;
        let i = 0;
        for(let k in data){
            let {TYPE,REMARK} = data[i];
            let {TYPE:TYPE2,REMARK:REMARK2} = data[i+1]||{}
            i++;

            //类型相同且内容相同
            if(TYPE==TYPE2 && REMARK==REMARK2){
                index++;
            }else{
                newdata.push({
                    ...data[k],
                    key:TYPE+REMARK,
                    hasCol:index
                })
                index = 1;
            }
        }
      console.log(newdata)

 

重组后newdata的数据:

posted @ 2019-12-18 16:02  秃头的铲屎官  Views(3189)  Comments(0Edit  收藏  举报