js json list转map

ningyb 2016-02-24 03:46:38

不废话直接上:

[
{ id:1, name:"101", pt:{ id:111 } },
{ id:2, name:"102", pt:{ } },
{ id:3, name:"103", pt:{ id:111 } }
]
转成
[
{
pt:{ id:111 },
pd:[ { id:1, name:"101"}, { id:3, name:"103"} ]
},
{
pt:{},
pd:[ { id:2, name:"102"} ]
}
]


请问下大神,怎么转?


...全文
328 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ningyb 2016-02-24
  • 打赏
  • 举报
回复
引用 4 楼 functionsub 的回复:
var arr = [
    { id:1, name:"101", pt:{ id:111 } },
    { id:2, name:"102", pt:{ } },
    { id:3, name:"103", pt:{ id:111 } }
];




var cache = {};
var ptid ,newArr = [];
var nopt = {
  pt : {},
  pd : []
}
var _temp ;
for(var i=0;i<arr.length;i++){
  _temp = {};
  _temp.id = arr[i].id;
  _temp.name = arr[i].name;
  ptid = arr[i].pt.id;
  if(ptid === undefined){
    nopt.pd.push(_temp);
  }else{
    if(!cache[ptid]){
      cache[ptid] = {
        pt : {
          id : arr[i].id
        },
        pd : []
      }
    }
    cache[ptid].pd.push(_temp);
  }
}
for(var p in cache){
  newArr.push(cache[p]);
}
newArr.push(nopt);

console.log(newArr)
ningyb 2016-02-24
  • 打赏
  • 举报
回复
引用 3 楼 nyb869008813 的回复:
functionsub 2016-02-24
  • 打赏
  • 举报
回复
var arr = [
    { id:1, name:"101", pt:{ id:111 } },
    { id:2, name:"102", pt:{ } },
    { id:3, name:"103", pt:{ id:111 } }
];




var cache = {};
var ptid ,newArr = [];
var nopt = {
  pt : {},
  pd : []
}
var _temp ;
for(var i=0;i<arr.length;i++){
  _temp = {};
  _temp.id = arr[i].id;
  _temp.name = arr[i].name;
  ptid = arr[i].pt.id;
  if(ptid === undefined){
    nopt.pd.push(_temp);
  }else{
    if(!cache[ptid]){
      cache[ptid] = {
        pt : {
          id : arr[i].id
        },
        pd : []
      }
    }
    cache[ptid].pd.push(_temp);
  }
}
for(var p in cache){
  newArr.push(cache[p]);
}
newArr.push(nopt);

console.log(newArr)
ningyb 2016-02-24
  • 打赏
  • 举报
回复
ningyb 2016-02-24
  • 打赏
  • 举报
回复
ningyb 2016-02-24
  • 打赏
  • 举报
回复

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧