这样的树形结构如何过滤?

原始数据两个数组:

const A = [
    {
        key: 1,
        name: 'a',
        icon: 'iconmonitor',
        children: [
            {
                key: 1 - 1,
                name: 'a-1'
            },
            {
                key: 1 - 2,
                name: 'a-2'
            }
        ]
    },
    {
        key: 2,
        name: 'b',
        icon: 'iconmonitor',
        children: [
            {
                key: 2 - 1,
                name: 'b-1'
            },
            {
                key: 2 - 2,
                name: 'b-2'
            }
        ]
    }
];


const B = [
    {
        key: 2,
        name: '名字',
        auth: '123456',
        children: [
            {
                key: 2 - 1,
                name: '名字1',
                auth: '000'
            }
        ]
    }
];

通过这两个数组得到:

const result = [
    {
        key: 2,
        name: 'b',
        icon: 'iconmonitor',
        auth: '123456',
        children: [
            {
                key: 2 - 1,
                name: 'b-1',
                auth: '000'
            }
        ]
    }
];

请问如何处理呢?

阅读 2.5k
3 个回答
  1. 遍历第 1 个数组,生成 key -> name 的映射表
  2. 遍历第 2 个,查表替换 name

这需要遍历加递归实现两个树的交集。你这里面有些需要合并,这不是很有规律

A.filter(a => B.some(b => a.key == b.key))

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题