前端在跟后台对接口时 经常会发现后台返回的json数组并不是自己想要的格式,这样就需要前端自己(后台不想改的情况下)对数据进行处理
例:根据pid进行分类 方便我对循环 渲染dom
处理后的数据:
实现方法:
var typeInfo = [{
"id": 18,
"pid": 17,
"name": " 快手",
"pname": "微博",
"order": 0,
"title": "【小红书】点赞+收藏",
"img": "http://whb.yqin.cn/upload/admin/20190822/b3d3ba34eaceaff6d0cd9f9315014c39.png",
"dmoney": "0.20"
}, {
"id": 16,
"pid": 15,
"name": "抖音",
"pname": "小红书点赞+收藏",
"order": 0,
"title": "【抖音】提示:此处输入,点赞+评论",
"img": "http://whb.yqin.cn/upload/admin/20190822/5fa8d7447f637f78da8d65608afdc1c4.png",
"dmoney": "0.20"
}, {
"id": 17,
"pid": 15,
"name": "微博",
"pname": "小红书点赞+收藏",
"order": 0,
"title": "【微博】提示:此处输入,点赞+收藏",
"img": "http://whb.yqin.cn/upload/admin/20190822/07737ae6ac4938806ea69b796e166dd6.png",
"dmoney": "0.20"
}, {
"id": 21,
"pid": 17,
"name": "火山",
"pname": "微博",
"title": "【火山】列入点赞+评论",
"content": "",
"img": "http://whb.yqin.cn/upload/admin/20190822/e06b716f453dc6af6db07edc7fcc8122.png",
"dmoney": "0.20"
}];
if (typeInfo.length > 0) {
var map = {},dest = [];
for(var i = 0; i < typeInfo.length; i++){
var ai = typeInfo[i];
if (!map[ai.pid]) {
dest.push({
pid: ai.pid,
data: [ai]
});
map[ai.pid] = ai;
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j];
if (dj.pid == ai.pid) {
dj.data.push(ai);
break;
}
}
}
}
}
console.log(dest)