多维数组如何通过id查找?
Element:[
name:'一类'
child:[
{name:'第一个',id:'123456'}
]
]
我现在知道一个id为123456,想要通过id来找到对应的对象{name:'第一个',id:'123456'}
第一个能想到的就是两个for循环嵌套,请问有什么更好更简洁的写法吗
回复
1个回答

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' }
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容