借鉴上面大哥 ( 每个人都有一个梦才不会孤单的说 ) 利用对象处理相同 省 市 的思路, 我想到这样的处理方式:
var oldArr = [
{ province: "广东省", city: "广州市", district: "天河区" },
{ province: "广西省", city: "贵港市", district: "平南镇" },
{ province: "广西省", city: "贵港市", district: "金田镇" },
{ province: "广东省", city: "广州市", district: "白云区" },
{ province: "广东省", city: "东莞市", district: "常平镇" },
{ province: "广东省", city: "深圳市", district: "龙华区" },
{ province: "广东省", city: "深圳市", district: "南山区" },
{ province: "广东省", city: "深圳市", district: "宝安区" }
];
var obj = {};
var newArr = [];
for (var index = 0; index < oldArr.length; index++) {
const item = oldArr[index];
if (!obj[item.province]) {
obj[item.province] = {};
obj[item.province][item.city] = [{name: item.district}];
} else {
var isCity = false;
Object.keys(obj[item.province]).forEach(function(key,i){
if(key == item.city){
isCity = true;
obj[item.province][key].push({name: item.district})
}
});
if(!isCity){
obj[item.province][item.city] = [{name: item.district}];
}
}
}
Object.keys(obj).forEach(function(item,index){
var a = {
name: item,
children: []
}
Object.keys(obj[item]).forEach(function(e,i){
a.children.push({
name: e,
children: obj[item][e]
});
});
newArr.push(a);
})
console.log("新结构:", newArr,obj);
还有很多别的方法可以处理成这样的数据 , 这样的处理方式可能会很少有人想到