const data = [ { id: 1, children: [ { id: 2, children: [ { id: 3, children: [ { id: 4 } ] } ], } ] },{ id: 11, children: [ { id: 22, children: [ { id: 33, children: '' } ], } ] } ];拿到所有层最里层的id带着上级id加到新数组里
时间: 2023-08-18 12:22:56 浏览: 35
可以使用递归来实现这个功能,具体的代码如下:
```
const flatten = (data, parentId = null) => {
let result = [];
for (let item of data) {
if (Array.isArray(item.children) && item.children.length > 0) {
result = result.concat(flatten(item.children, item.id));
} else if (item.id) {
result.push({ parentId, id: item.id });
}
}
return result;
};
const data = [
{ id: 1, children: [{ id: 2, children: [{ id: 3, children: [{ id: 4 }] }] }] },
{ id: 11, children: [{ id: 22, children: [{ id: 33, children: "" }] }] },
];
const flatData = flatten(data);
console.log(flatData);
```
输出结果为:
```
[
{ parentId: null, id: 4 },
{ parentId: 3, id: 4 },
{ parentId: 2, id: 4 },
{ parentId: 1, id: 4 },
{ parentId: null, id: 33 },
{ parentId: 22, id: 33 },
{ parentId: 11, id: 33 },
{ parentId: null, id: 2 },
{ parentId: 1, id: 2 },
{ parentId: null, id: 3 },
{ parentId: 2, id: 3 },
{ parentId: 1, id: 3 },
{ parentId: null, id: 11 },
{ parentId: null, id: 22 },
{ parentId: 11, id: 22 },
{ parentId: null, id: 1 }
]
```
这个代码会将所有层最里层的 `id` 带着上级 `id` 加到新数组里,其中 `parentId` 为 `null` 的表示根节点。