js数组多层嵌套,如何快速检索?

发布于 2022-09-12 13:56:19 字数 233 浏览 11 评论 0

需要实现功能是菜单检索,根据输入moduleName匹配到某个子菜单,获取到moduleCode
数据结构是这样的image.pngimage.png

数组里每个对象是一个菜单,childModules是其子菜单
怎么样能快速检索?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我不会写诗 2022-09-19 13:56:19

这就是嵌套结构查找元素。
试试这个?https://www.npmjs.com/package...

function getResult (result, moduleName) {
  const menu = treeTool.findNode(result, node => node.moduleName == moduleName, { children: 'childModules' })
  return menu && menu.moduleCode
}
你在看孤独的风景 2022-09-19 13:56:19

如果多次调用的话,建议先遍历一次处理成以moduleCode为键名的对象,后续直接在这个对象上取值,比每次都遍历数组效率提升巨大

朕就是辣么酷 2022-09-19 13:56:19
const searchCodeByName = (function () {
  let rtn = ''
  const arr = [
    { moduleCode: 'hello', moduleIcon: 'your', moduleId: 1, moduleName: 'world' },
    { moduleCode: 'day', moduleIcon: 'day', moduleId: 2, moduleName: 'up' },
    { moduleCode: 'hope', moduleIcon: 'you', moduleId: 3, moduleName: 'better' }
  ]
  const str = JSON.stringify(arr)
  return function (name) {
    const reg = new RegExp('moduleCode":"([^"]*)","moduleIcon":"([^"]*)","moduleId":([^,]*),"moduleName":"' + name + '"')
    const res = str.match(reg)
    if (res !== null) {
      rtn = res[1]
    }
    return rtn
  }
})()

console.log('search code by name world', '->', searchCodeByName('world'))
console.log('search code by name day', '->', searchCodeByName('up'))
console.log('search code by name better', '->', searchCodeByName('better'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文