亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用于搜索實現的多級數組過濾器

用于搜索實現的多級數組過濾器

慕容708150 2022-07-08 10:49:10
我正在嘗試使用多級數組實現搜索??紤]我有如下 JSON 多級數組const testData = [        {            menu: 'Test',            submenu: [                {                    menu: 'Test1',                },                {                    menu: 'Test2',                    submenu: [                        {                            menu: 'Test2.1',                        },                        {                            menu: 'Test2.2',                        },                        {                            menu: 'Test2.3',                        },                    ],                },            {        menu: 'TestNew',        submenu: [            {                menu: 'TestNew1.1',            },            {                menu: 'TestNew1.2'            },            {                menu: 'TestNew1.3',            },        ],    },            ],        }]如果我嘗試搜索單詞 Test2.3,我有搜索框,我希望 JSON 采用以下格式const testData = [        {            menu: 'Test',            submenu: [                {                    menu: 'Test2',                    submenu: [                        {                            menu: 'Test2.3'                        },                    ],                },            ],        }]我已經引用了鏈接Using array.filter down multiple levels但它不符合我的輸出。它返回所有子菜單,如下所示const testData = [        {            menu: 'Test',            submenu: [                {                    menu: 'Test1',                },                {                    menu: 'Test2',                    submenu: [                        {                            menu: 'Test2.1',                        },                        {                            menu: 'Test2.2',                        },                        {                            menu: 'Test2.3',                        },                    ],                },            ],        }]我們還有其他方法可以滿足我的期望嗎?提前致謝
查看完整描述

1 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

您可以使用遞歸方法,reduce該方法僅返回找到目標值的子菜單元素并過濾掉其他元素。


const data = [{"menu":"Test","submenu":[{"menu":"Test1"},{"menu":"Test2","submenu":[{"menu":"Test2.1"},{"menu":"Test2.2"},{"menu":"Test2.3"}]},{"menu":"TestNew","submenu":[{"menu":"TestNew1.1"},{"menu":"TestNew1.2"},{"menu":"TestNew1.3"}]}]}]


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;

  }, [])

}


console.log(search(data, 'Test2.1'))

console.log(search(data, 'TestNew1.3'))


查看完整回答
反對 回復 2022-07-08
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號