为了账号安全,请及时绑定邮箱和手机立即绑定

求一个js算法,转换数据格式

求一个js算法,转换数据格式

开满天机 2019-05-10 09:15:15
vardataList=[{parent:"广东",child:"深圳",id:01},{parent:"广东",child:"广州",id:02},{parent:"广东",child:"东莞",id:03},{parent:"江西",child:"九江",id:04},{parent:"江西",child:"南昌",id:05}]vargetData=[{parent:"广东",children:[{name:"深圳",id:01},{name:"广州",id:02},{name:"东莞",id:03},]},{parent:"江西",children:[{name:"九江",id:04},{name:"南昌",id:05}]}]如上述代码两个数组,怎么简单快速的将dataList转换为getData呢?为什么我觉得很复杂呢,转着转着就感觉有困难了,是不是js基础不扎实呢?如何提高这种数据转换能力呢?望大神指点一下!
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

如果只有一层的话其实逻辑上只有2个步骤1.提取出不重复parent数组2.匹配parent数组的children
实现方式就多了,我提供个简单的
vardataList=[
{parent:"广东",child:"深圳",id:01},
{parent:"广东",child:"广州",id:02},
{parent:"广东",child:"东莞",id:03},
{parent:"江西",child:"九江",id:04},
{parent:"江西",child:"南昌",id:05}
]
vargetData=dataList
.reduce((arr,{parent})=>void(!arr.includes(parent)&&arr.push(parent))||arr,[])
.map(parent=>({
parent,
children:dataList.filter(v=>v.parent===parent)
}
))
console.log(getData)
                            
查看完整回答
反对 回复 2019-05-10
  • 2 回答
  • 0 关注
  • 467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信