js tree遍历数据,转成扁平化

const aa = [

            {
                children: [
                    {
                        configId: 362,
                        fieldDesc: "客户名称",
                        fieldName: "customerName",
                        itemConfigId: 2,
                        level: 2,
                        pageStyle: "MULTIPLE_CHOICE",
                        parentId: 361,
                        placeHolder: "客户名称"
                    },
                    {
                        configId: 363,
                        fieldDesc: "所在区域",
                        fieldName: "region",
                        itemConfigId: 3,
                        level: 2,
                        pageStyle: "MULTIPLE_SELECT",
                        parentId: 361,
                        placeHolder: "所在区域"
                    },
                    {
                        children: [
                            {
                                configId: 365,
                                fieldDesc: "近距离",
                                fieldName: "regionRange_1",
                                itemConfigId: 5,
                                level: 3,
                                pageStyle: "MULTIPLE_CHOICE",
                                parentId: 364,
                                placeHolder: "近距离"
                            },
                            {
                                configId: 366,
                                fieldDesc: "中距离",
                                fieldName: "regionRange_2",
                                itemConfigId: 6,
                                level: 3,
                                pageStyle: "MULTIPLE_CHOICE",
                                parentId: 364,
                                placeHolder: "中距离"
                            }
                        ],
                        configId: 364,
                        fieldDesc: "区域范围",
                        fieldName: "regionRange",
                        itemConfigId: 4,
                        level: 2,
                        pageStyle: "MULTIPLE_SELECT",
                        parentId: 361,
                        placeHolder: "区域范围"
                    },
                    {
                        children: [
                            {
                                configId: 369,
                                fieldDesc: "大客户",
                                fieldName: "customerLabel_1",
                                itemConfigId: 9,
                                level: 3,
                                pageStyle: "MULTIPLE_SELECT",
                                parentId: 368,
                                placeHolder: "大客户"
                            },
                            {
                                configId: 370,
                                fieldDesc: "中客户",
                                fieldName: "customerLabel_2",
                                itemConfigId: 10,
                                level: 3,
                                pageStyle: "MULTIPLE_SELECT",
                                parentId: 368,
                                placeHolder: "中客户"
                            },
                            {
                                configId: 371,
                                fieldDesc: "小客户",
                                fieldName: "customerLabel_3",
                                itemConfigId: 11,
                                level: 3,
                                pageStyle: "customerLabel_2",
                                parentId: 368,
                                placeHolder: "小客户"
                            }
                        ],
                        configId: 368,
                        fieldDesc: "客户标签",
                        fieldName: "customerLabel",
                        itemConfigId: 8,
                        level: 2,
                        pageStyle: "MULTIPLE_SELECT",
                        parentId: 361,
                        placeHolder: "客户标签"
                    }
                ],
                configId: 361,
                fieldDesc: "客户维度",
                fieldName: "customerDimension",
                itemConfigId: 1,
                level: 1,
                pageStyle: "SINGLE_CHOICE",
                parentId: 0,
                placeHolder: "客户维度"
            }
        ];
        console.log(aa);
        const dd = value => {
            let result = [];
            value.forEach(item => {
                // console.log(result, item);
                if (item.children) {
                    console.log(22);
                    dd(item.children);
                }
                result.push({
                    fieldDesc: item.fieldDesc,
                    pageStyle: item.pageStyle,
                    placeHolder: item.placeHolder,
                    level: item.level
                });
            });
            return result;
        };
阅读 3k
2 个回答
/**
 * 实现多维数组对象的扁平化
 * @param {Array} [obj], 期望转换的数组对象
 * @param {String} key, 关键字
 */
function flatArr ([obj], key){
    let temp = obj[key];
    let result = [obj];

    if(temp && temp.constructor === Array){
        // 1.将子级 push 到父级(造成二维数组 [obj, [children]])
        // 2.递归子级的扁平化(清理子级中的第三维)
        result.push(temp.map(item => flatArr([item], key)).flat());
    }
    // 清理输出内容中的二维
    return result.flat()
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题