js 多维数组转一维数组(根据字段展示)

const treeData = [
    {
        title: '0-0',
        key: '0-0',
        children: [
            {
                title: '0-0-0',
                key: '0-0-0',
                children: [
                    { title: '0-0-0-0', key: '0-0-0-0' },
                    { title: '0-0-0-1', key: '0-0-0-1' },
                    { title: '0-0-0-2', key: '0-0-0-2' },
                ],
            },
            {
                title: '0-0-1',
                key: '0-0-1',
                children: [
                    { title: '0-0-1-0', key: '0-0-1-0' },
                    { title: '0-0-1-1', key: '0-0-1-1' },
                    { title: '0-0-1-2', key: '0-0-1-2' },
                ],
            },
            {
                title: '0-0-2',
                key: '0-0-2',
            },
        ],
    },
    {
        title: '0-1',
        key: '0-1',
        children: [
            { title: '0-1-0-0', key: '0-1-0-0' },
            { title: '0-1-0-1', key: '0-1-0-1' },
            { title: '0-1-0-2', key: '0-1-0-2' },
        ],
    },
    {
        title: '0-2',
        key: '0-2',
    },
];


  

 function flatten(data, keys, level = 0,isfold = false) {
            return data.reduce((arr, x) => [
                ...arr,
                keys.reduce((o, k) => (o[k] = x[k], o), { level,isfold:x.children ? true:false}),
                ...flatten(x.children || [], keys, level + 1,isfold),
            ], [])
        }
        console.log(flatten(treeData,['title','key']))


// 输出
0: {level: 0, isfold: true, title: "0-0", key: "0-0"}
1: {level: 1, isfold: true, title: "0-0-0", key: "0-0-0"}
2: {level: 2, isfold: false, title: "0-0-0-0", key: "0-0-0-0"}
3: {level: 2, isfold: false, title: "0-0-0-1", key: "0-0-0-1"}
4: {level: 2, isfold: false, title: "0-0-0-2", key: "0-0-0-2"}
5: {level: 1, isfold: true, title: "0-0-1", key: "0-0-1"}
6: {level: 2, isfold: false, title: "0-0-1-0", key: "0-0-1-0"}
7: {level: 2, isfold: false, title: "0-0-1-1", key: "0-0-1-1"}
8: {level: 2, isfold: false, title: "0-0-1-2", key: "0-0-1-2"}
9: {level: 1, isfold: false, title: "0-0-2", key: "0-0-2"}
10: {level: 0, isfold: true, title: "0-1", key: "0-1"}
11: {level: 1, isfold: false, title: "0-1-0-0", key: "0-1-0-0"}
12: {level: 1, isfold: false, title: "0-1-0-1", key: "0-1-0-1"}
13: {level: 1, isfold: false, title: "0-1-0-2", key: "0-1-0-2"}
14: {level: 0, isfold: false, title: "0-2", key: "0-2"}

  

原文地址:https://www.cnblogs.com/qq735675958/p/13274687.html