我有类似这样一个数组:
```javascript
const array = [
{
name: 'a',
children: [
{
name: 'aa',
children: [
{
name: 'aaa',
children: []
}
]
},
{
name: 'ab',
children: []
},
]
},
{
name: 'b',
children: [
{
name: 'ba',
children: []
},
{
name: 'bb',
children: []
},
]
},
]
```
我希望定义一个函数来展平这个多维嵌套的对象数组,把它变成这样:
```javascript
[
{name: 'a', children: []},
{name: 'aa', children: []},
{name: 'aaa', children: []},
{name: 'ab', children: []},
{name: 'b', children: []},
{name: 'ba', children: []},
{name: 'bb', children: []},
]
```
我的函数是这样写的:
```javascript
function flat(array, children = 'children') {
const res = []
const recursive = (target) => {
target.map(item => {
res.push(item)
if(item.hasOwnProperty(children) && item[children].length) {
recursive(item[children])
}
})
}
recursive(array)
return res
}
```
到目前为止,需求是可以实现的。但是当我想用 typescript 来实现的时候,我发现我不知道该如何定义 array 的类型了。万 v 友,求帮助啊
发现 V2EX 对 markdown 代码块语法支持的不太好,贴个[有道云笔记地址](
http://note.youdao.com/noteshare?id=b80252fbd7248f58dc14446823ff90a1&sub=2839057A8A83481C9AE6D1632E63F819)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/729911
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.