纵表整理数据集合处理

时间:2019-10-30
本文章向大家介绍纵表整理数据集合处理,主要包括纵表整理数据集合处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

关于纵表,小小的说明一下:

就是后台对于无法确定属性名有多少,采用KEY,VALUE来代表属性名,最后添加的时候,可以随意添加数量和种类
比如:

var list = {
                "code":"200",
                "data":[
                    {
                        "type":"XZ",
                        "id":856,
                        "profileKey":"name",
                        "profileValue":"肖战",
                    },
                    {
                        "type":"XZ",
                        "id":854,
                        "profileKey":"age",
                        "profileValue":"18",
                    },
                    {
                        "type":'PXY',
                        "id":853,
                        "profileKey":"name",
                        "profileValue":"彭于晏",
                    },{
                        "type":"PXY",
                        "id":852,
                        "profileKey":"age",
                        "profileValue":"20",
                    }
                ],
                "msg":"成功"
            }

我想整理出来,每个人的特性都是唯一的,并且每个特性都是以KEY=VALUE的形式来,前端比较好直接取用;

function getCollection(callback) {
        let data = list.data;
        let allArr = [];
        let allObj = {};
        let initObj = {
            type: data[0].type,
            [data[0].profileKey]: data[0].profileValue
        }

        for(var i = 1; i < data.length; i ++){
            let currItem = data[i-1], nextItem = data[i];
            if (currItem.type === nextItem.type) {
                allObj[currItem.type] = Object.assign(initObj, {
                    [nextItem.profileKey]: nextItem.profileValue
                })
            }else {
                initObj = {
                    type: nextItem.type,
                    [nextItem.profileKey]: nextItem.profileValue
                }
                continue;
            }
            
        }
        //获取list---数组形式
        for (var key in allObj) {
          allArr.push(allObj[key]);
        }

        callback(allObj,allArr);
}


//调用方法
        getCollection((resObj, resList) =>{
        //使用数据
            console.log(resObj);
            console.log(resList)
        })

// 对象形式 --resObj                      
 {
   PXY:{
    age: "20"
    name: "彭于晏"
    type: "PXY"
  },
  XZ:{
      age: "18"
      name: "肖战"
      type: "XZ"
    }
 } 

//数组形式 --- resList
[
  {
    age: "20"
    name: "彭于晏"
    type: "PXY"
  },{
      age: "18"
      name: "肖战"
      type: "XZ"
    }
]

原文地址:https://www.cnblogs.com/lulianlian/p/11763448.html