猿问

返回嵌套对象数组中所有匹配项的完整路径

我在搜索深度嵌套的对象数组并返回所有匹配项的整个路径时遇到了非常困难的时间。我已经找到了问题的部分答案,但仅返回第一个匹配项目的路径,而我需要所有匹配项目的路径。


现在我相信,与其进一步阐明问题,代码本身会更有帮助。例如,我需要在标签字段中搜索字符串“沙发”


输入数据


 {

   "children":[

  {

     "label":"Home",

     "key":"home",

     "level":1,

     "children":[

        {

           "label":"Furniture",

           "key":"furniture",

           "level":2,

           "children":[

              {

                 "label":"Chair",

                 "key":"chair",

                 "level":3

              },

              {

                 "label":"Table",

                 "key":"table",

                 "level":3

              },

              {

                 "label":"Lamp",

                 "key":"lamp",

                 "level":3

              }

           ]

        }

     ]

  },

  {

     "label":"Outdoor",

     "key":"outdoor",

     "level":1,

     "children":[

        {

           "label":"Furniture",

           "key":"furniture",

           "level":2,

           "children":[

              {

                 "label":"Trampoline",

                 "key":"trampoline",

                 "level":3

              },

              {

                 "label":"Swing",

                 "key":"swing",

                 "level":3

              },

              {

                 "label":"Large sofa",

                 "key":"large sofa",

                 "level":3

              },

              {

                 "label":"Medium Sofa",

                 "key":"mediumSofa",

                 "level":3

              },

              {

                 "label":"Small Sofa Wooden",

                 "key":"smallSofaWooden",

                 "level":3

              }

           ]

        },

        {

           "label":"Games",

           "key":"games",

           "level":2,

           "children":[

              

           ]

        }

     ]

  },

  {

     "label":"Refurbrished Items",

     "key":"refurbrished items",

     "level":1,

     "children":[

        

     ]

  },




holdtom
浏览 114回答 1
1回答

茅侃侃

希望这就是您正在寻找的:const input = {  "children": [{      "name": "test",      "title": "test 1",      "id": "t1",      "children": [      ]    },    {      "name": "test",      "title": "test 2",      "id": "t2",      "children": [{          "name": "Dummy 1",          "title": "dummy",          "id": "dummy1",          "children": [          ]        },        {          "name": "Dummy 2",          "title": "dummy2",          "id": "dummy2",          "children": [{            "name": "Dummy 2.1",            "title": "dummy2.1",            "id": "dummy2.1",            "children": [            ]          }]        }      ]    },    {      "name": "home 1",      "title": "home 1",      "id": "h1",      "children": [{        "name": "room 1",        "title": "room 1",        "id": "room1",        "children": [{            "name": "Dummy 4.1",            "title": "dummy4.1",            "id": "dummy4.1",            "children": [            ]          },          {            "name": "test",            "title": "test 4",            "id": "test4",            "children": [            ]          }        ]      }]    },    {      "name": "home 2",      "title": "home 2",      "id": "h2",      "children": [{        "name": "room 2",        "title": "room 2",        "id": "room2",        "children": [{            "name": "Dummy 5.1",            "title": "dummy5.1",            "id": "dummy5.1",            "children": [            ]          },          {            "name": "test",            "title": "test 6",            "id": "test6",            "children": [            ]          },          {            "name": "test",            "title": "test 7",            "id": "test7",            "children": [            ]          }        ]      }]    },    {      "name": "home 3",      "title": "home 3",      "id": "h3",      "children": [{        "name": "room 2",        "title": "room 2",        "id": "room2",        "children": [{            "name": "Dummy 5.1",            "title": "dummy5.1",            "id": "dummy5.1",            "children": [            ]          },          {            "name": "test",            "title": "test 6",            "id": "test6",            "children": [            ]          },          {            "name": "computer",            "title": "computer1",            "id": "computer1",            "children": [{                "name": "Dummy 7.1",                "title": "dummy7.1",                "id": "dummy7.1",                "children": [                ]              },              {                "name": "test",                "title": "test 10",                "id": "test10",                "children": [                ]              }            ]          }        ]      }]    }  ]}function findChild(obj, condition) {  if (Object.entries(condition).every(([k, v]) => obj[k] === v)) {    return obj;  }  const children = []  if (obj.children.length > 0) {    for (const child of obj.children) {      const found = findChild(child, condition);      // If found, then add this node to the ancestors of the result      if (found)        children.push(found);    }    obj.children = children;    return obj;  }  return null;}var search = {  name: 'test'};console.dir(findChild(input, search), {  depth: null});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答