多维数组如何通过id查找?

作者站长头像
站长
· 阅读数 14

    Element:[
        name:'一类'
        child:[
                {name:'第一个',id:'123456'}
            ]
    ]

我现在知道一个id为123456,想要通过id来找到对应的对象{name:'第一个',id:'123456'}第一个能想到的就是两个for循环嵌套,请问有什么更好更简洁的写法吗

回复
1个回答
avatar
test
2024-07-14

一般来说是都是通过递归来查找,如果使用频率不高的话,但是效率一般都比较低。

如果说使用频率比较高,我一般都是转换成 Map 数据,然后通过 get 去获取。比如说:

var arrayData = []
var mapData = new Map()
// 获取远程数据
fetchRemoteData(params).then(res=>{
   arrayData = res.data
   loopSet(arrayData)
}
function loopSet(data){
  if(!data || !data.length) return
  for(let item of data) {
    mapData.set(item.id, item)
    if(item.child && item.child.length) loopSet(item.child)
  }
}  
// 在需要使用的地方直接 .get + id 就可以获取到了。
mapData.get('123456')
// { name: '第一个', id: '123456' }
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容