- 有时前端拿到的数据是多层children嵌套的,但是我我们需要转成一维下拉数据框
原始数据:
const data = [
{
label: '一级 1',
level: 1,
children: [
{
label: '二级 1-1',
level: 2,
children: [
{
label: '三级 1-1-1',
level: 3,
},
],
},
],
},
{
label: '一级 2',
level: 1,
children: [
{
label: '二级 2-1',
level: 2,
children: [
{
label: '三级 2-1-1',
level: 3,
},
],
},
{
label: '二级 2-2',
level: 2,
children: [
{
label: '三级 2-2-1',
level: 3,
},
],
},
],
},
{
label: '一级 3',
level: 1,
children: [
{
label: '二级 3-1',
level: 2,
children: [
{
label: '三级 3-1-1',
level: 3,
},
],
},
{
label: '二级 3-2',
level: 2,
children: [
{
label: '三级 3-2-1',
level: 3,
},
],
},
],
},
];
处理方法:
function getFlatArr(arr) {
return arr.reduce((val, item) => {
let flatArr = [...val, item];
// 可以在此处限制各种需要的条件,在展示字段前加空格,——之类的,以及其它情况
if (item.children) {
flatArr = [...flatArr, ...getFlatArr(item.children)];
}
return flatArr;
}, []);
}
let newData = getFlatArr(data);
console.log(newData);