今天在CSDN上問答區看到一個提問的小伙伴,是想要將一維陣列轉化為三位陣列的需求,正好不是很忙,樂于助人的我立馬給這位同學安排上,當然也沒有顧及那么多去看資料什么的,就直接按照自己的思路走了!下方有原始碼

上面是他的資料格式,下面呢是要轉化的資料格式

話不多說直接上代碼
let arr = [{
'peovince': 'a', 'city': 'b', 'area': 'c'
},
{
'peovince': 'a', 'city': 'b', 'area': 'd'
},
{
'peovince': 'a', 'city': 'e', 'area': 'f'
},
{
'peovince': 'a', 'city': 'e', 'area': 'g'
},
{
'peovince': 'o', 'city': 'p', 'area': 'q'
},
{
'peovince': 'o', 'city': 'p', 'area': 'r'
},
{
'peovince': 'o', 'city': 's', 'area': 't'
},
{
'peovince': 'o', 'city': 's', 'area': 'v'
}];
開始轉化
let list = Array.from(new Set(
arr.map(item => {
return item['peovince']
})))
let subList = []
list.forEach(res => {
arr.forEach(ele => {
if (ele['peovince'] === res) {
let nameArr = subList.map(item => item.value)
if (nameArr.indexOf(res) !== -1) {
let nameArr2 = subList[nameArr.indexOf(res)].children.map(item => item.value)
if (nameArr2.indexOf(ele['city']) !== -1) {
subList[nameArr.indexOf(res)].children[nameArr2.indexOf(ele['city'])].children.push({
value: ele['area'],
label: ele['area'],
})
} else {
subList[nameArr.indexOf(res)].children.push({
value: ele['city'],
label: ele['city'],
children: [{
value: ele['area'],
label: ele['area'],
}]
})
}
} else {
subList.push({
value: res,
label: res,
children: [{
value: ele['city'],
label: ele['city'],
children: [{
value: ele['area'],
label: ele['area'],
}]
}]
})
}
}
})
})
console.log(subList)
最后列印的subList就是想要的格式了,讓我們看一下列印

被題主采納

? 原 創 不 易 , 希 望 大 家 多 多 支 持 ! ! ! \textcolor{blue}{原創不易,希望大家多多支持!!!} 原創不易,希望大家多多支持!!!
👍 點 贊 , 你 的 認 可 是 我 創 作 的 動 力 ! \textcolor{green}{點贊,你的認可是我創作的動力!} 點贊,你的認可是我創作的動力!
?? 收 藏 , 你 的 青 睞 是 我 努 力 的 方 向 ! \textcolor{green}{收藏,你的青睞是我努力的方向!} 收藏,你的青睞是我努力的方向!
?? 評 論 , 你 的 意 見 是 我 進 步 的 財 富 ! \textcolor{green}{評論,你的意見是我進步的財富!} 評論,你的意見是我進步的財富!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/392148.html
標籤:其他
上一篇:詳解vue的生命周期
