小编dot*_*008的帖子

Generify 将分层数组转换为平面数组

我正在尝试将分层数组的转换泛化为平面数组。我有这种对象,它有相同类型的孩子,有相同类型的孩子等等。

[{
        id: "123",
        children: [
            {
                id: "603",
                children: [
                    {
                        id: "684",
                        children: [
                            ...
                        ]
                    },
                    {
                        id: "456",
                        children: []
                    }
                ]
            }
        ]
    }]
Run Code Online (Sandbox Code Playgroud)

我找到了一种展平它的方法,并且我有嵌套层数的信息。一层深(作品):

let result = myArray.flat()
            .concat(myArray.flatMap(comm => comm.children));
Run Code Online (Sandbox Code Playgroud)

两层深(作品):

 let result = myArray.flat()
            .concat(myArray.flatMap(comm => comm.children))
            .concat(myArray.flatMap(comm => comm.children.flatMap(comm2 => comm2.children)));
Run Code Online (Sandbox Code Playgroud)

但是如何在函数中生成此代码以处理任何深度?我已经尝试过这个,但它不起作用:

  flatFunct = (myArray, deep) => {
        let func = comm => comm.children;
        let flatMapResult = myArray.flat();
        for (let i = 0; i < deep; i++) {
            flatMapResult = flatMapResult.concat(() …
Run Code Online (Sandbox Code Playgroud)

javascript arrays generics nested flatten

3
推荐指数
1
解决办法
54
查看次数

标签 统计

arrays ×1

flatten ×1

generics ×1

javascript ×1

nested ×1