首页 > 解决方案 > 多级数组的搜索实现

问题描述

我有如下 JSON。

const testData = [
        {
            menu: 'Test',
            submenu: [
                {
                    menu: 'Test1',
                    submenu: [
                        {
                            menu: 'Test1.1',


                        },
                        {
                            menu: 'Test1.2',


                        },
                        {
                            secondLevel: [
                                {
                                    menu: 'Test1.3',
                                    submenu: [
                                        {
                                            menu: 'Test1.4',

                                        },
                                        {
                                            menu: 'Test1.5',

                                        },

                                    ],
                                },
                            ],
                        },
                    ],
                },

我已经使用reduce函数来遍历搜索像Test1.1这样的预期单词我得到了正确的值,而在搜索时Test1.4没有正确出现,因为它具有secondLevel作为父对象。我使用的代码如下,stackoverflow 中建议使用该代码。

function search(data, value) {
  return data.reduce((r, e) => {
    const object = { ...e }
    const result = search(e.submenu || [], value)
    if (result.length) object.submenu = result
    if (e.menu == value || result.length) r.push(object)
    return r;
  }, [])
}

请建议在 secondLevel 对象中搜索元素的最佳方法。提前致谢

标签: javascriptarraysobjectecmascript-6

解决方案


推荐阅读