const list = [
{ id: 2, key: { id: 1, name: '测试' }, value: { id: 2, name: 'waer' } },
{ id: 3, key: { id: 2, name: '电影' }, value: { id: 3, name: 'rt' } },
{ id: 5, key: { id: 1, name: '测试' }, value: { id: 5, name: 'zxcf1' } },
{ id: 9, key: { id: 6, name: 'wer' }, value: { id: 9, name: 'rt' } },
{ id: 25, key: { id: 2, name: '电影' }, value: { id: 25, name: 'waerawer' } }
]
将上面数组转换成树状结构数据
assemblyTreeData = (list) => {
const target = [];
const keys = {};
list.forEach((item) => {
if (item.key && item.key.id) {
const values = {
label: item.value.name,
value: item.value.id
};
if (Object.prototype.hasOwnProperty.call(keys, item.key.id)) {
target[keys[item.key.id]].children.push(values);
} else {
keys[item.key.id] = target.length;
target.push({
value: item.key.id,
label: item.key.name,
children: [values]
});
}
}
});
return target;
};
转换结果:
[
{
value: 1,
label: '测试',
children: [
{
label: 'waer',
value: 2
},
{
label: 'zxcf1',
value: 5
}
]
},
{
value: 2,
label: '电影',
children: [
{
label: 'rt',
value: 3
},
{
label: 'waerawer',
value: 25
}
]
},
{
value: 6,
label: 'wer',
children: [
{
label: 'rt',
value: 9
}
]
}
]