【发布时间】:2019-10-18 15:04:06
【问题描述】:
我需要转换这种类型的嵌套数组,以便能够以最快的方式通过键 (id) 进行搜索:
[
{
"id":1,
"name":"example1",
"items":[
{
"id":1,
"name":"example1",
"example":123
},
{
"id":2,
"name":"example1",
"example":123
}
]
},
{
"id":2,
"name":"example1",
"items":[
{
"id":3,
"name":"example1",
"example":123
},
{
"id":4,
"name":"example1",
"example":123
}
]
}
]
实际上嵌套数组要多得多(大约 4 层)。
我目前的方法是对每个级别进行reduce,然后我可以使用例如list[1].items[1].name。对我来说,这看起来非常缓慢且效率低下。
我还在stackoverflow 上发现我可以创建查找表id->index,但这看起来具有相同的复杂性并且占用更多内存。
有人有更好的想法来做这样的转变吗?我正在处理大量数据集,我开始觉得我需要找到更好的方法来处理数据。
我这样做是因为我需要通过 ID 在这个数据集中快速搜索。通过findIndex 在数组中搜索很慢。如上所述,转换需要处理。
我需要找到总体复杂度最低的选项。
【问题讨论】:
-
id出现在多个级别,您对哪一个感兴趣? -
查找表确实是要走的路。请说明为什么这对您来说不够好。在您的问题中添加一些代码,以便我们了解您是如何实现它的,以及可能存在问题的地方。您只需进行一次转换,every 搜索即可从中获益。所以这个代价是值得的。
-
假设你要查找id=1,有两个地方出现了id=1,假设得到哪一个?
-
@sam id 在给定级别上是唯一的
标签: javascript node.js algorithm performance reduce