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

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

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

阅读 6.6k
3 个回答

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

function getResult (result, moduleName) {
  const menu = treeTool.findNode(result, node => node.moduleName == moduleName, { children: 'childModules' })
  return menu && menu.moduleCode
}

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

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