现有api返回数据
[
{
province: '广东省',
city: '广州市',
districr: '天河区',
},
{
province: '广东省',
city: '广州市',
districr: '白云区',
},
{
province: '广东省',
city: '东莞市',
districr: '常平镇',
},
]
请问如何在最短时间内处理成? 使用es6的解构赋值可以解决吗? 这是之前遇到的面试题。
[
{
name: '广东省',
children: [
{
name: '广州市',
children: [{ name: '天河区' }, { name: '白云区' }]
},
{
name: '东莞市',
children: [{ name: '常平镇' }]
},
],
},
]
function processArray(){
var obj = {
"name": "广东省",
"children": []
}
arr.forEach(item => {
var city_has_include = obj.children.some(child => child.name == item.city);
if(!city_has_include){
obj.children.push(
{
"name": item.city,
"children": [
{"name": item.districr}
]
}
)
}else {
obj.children.forEach(city => {
if(city.name == item.city){
city.children.forEach(qu => {
if(qu.name != item.districr){
city.children.push({"name": item.districr});
}
})
}
})
}
});
console.log('obj :>> ', obj);
}
建议直接使用jsonPath或者jsonQuery这种插件 ,npm 就可以下载
建议让后端直接在查数据库的时候返回这种结构的数据给你,前端当然也能实现,但是拿到数据之后需要遍历处理,请试想一下,如果数据量很大,你从api拿到数据了,但是需要遍历处理才能使用或者显示出来,这个时候,遍历时间如果稍微长一点,就会导致前端页面有一段间隙是空白,用户体验不好