let data = [{
'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 data1 = [{
value: 'a',
lable: 'a',
children: [{
value: 'b',
lable: 'b',
children: [{
value: 'c',
lable: 'c',
}, {
value: 'd',
lable: 'd',
}],
}, {
value: 'e',
lable: 'e',
children: [{
value: 'f',
lable: 'f',
}, {
value: 'g',
lable: 'g',
}],
}]
}]
根据您线下提供的真实数据 我写了一个方法 然后需要你定义一个arr接受你的真实数据 然后复制我下面的方法 最后打印就是你想要的
let arr = [{
'品牌': 'xiaomi', '机型': '10', '配置': '512'
},
{
'品牌': 'xiaomi', '机型': '10', '配置': '128'
},
{
'品牌': 'xiaomi', '机型': '11', '配置': '128'
},
{
'品牌': 'xiaomi', '机型': '11', '配置': '64'
},
{
'品牌': 'iPhone', '机型': '10', '配置': '128'
},
{
'品牌': 'iPhone', '机型': '11', '配置': '64'
},
{
'品牌': 'iPhone', '机型': '12', '配置': '64'
},
{
'品牌': 'honor', '机型': '4', '配置': '256'
},
{
'品牌': 'honor', '机型': '5', '配置': '128'
},
{
'品牌': 'honor', '机型': '6', '配置': '128'
}]
let list = Array.from(new Set(
arr.map(item => {
return item['品牌']
})))
let subList = []
list.forEach(res => {
arr.forEach(ele => {
if (ele['品牌'] === 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['机型']) !== -1) {
subList[nameArr.indexOf(res)].children[nameArr2.indexOf(ele['机型'])].children.push({
value: ele['配置'],
label: ele['配置'],
})
} else {
subList[nameArr.indexOf(res)].children.push({
value: ele['机型'],
label: ele['机型'],
children: [{
value: ele['配置'],
label: ele['配置'],
}]
})
}
} else {
subList.push({
value: res,
label: res,
children: [{
value: ele['机型'],
label: ele['机型'],
children: [{
value: ele['配置'],
label: ele['配置'],
}]
}]
})
}
}
})
})
console.log(subList)
没有太明白题主意思!可以再描述一下吗