纵表整理数据集合处理
关于纵表,小小的说明一下:
就是后台对于无法确定属性名有多少,采用KEY,VALUE来代表属性名,最后添加的时候,可以随意添加数量和种类
比如:
var list = {
"code":"200",
"data":[
{
"type":"XZ",
"id":856,
"profileKey":"name",
"profileValue":"肖战",
},
{
"type":"XZ",
"id":854,
"profileKey":"age",
"profileValue":"18",
},
{
"type":'PYY',
"id":853,
"profileKey":"name",
"profileValue":"彭于晏",
},{
"type":"PYY",
"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"
}
]