从大量的键值对中获取密钥

时间:2017-07-18 09:43:12

标签: javascript node.js algorithm performance data-structures

有巨大的物体看起来像:

{
  "exercise": ["running","walking","gym" ........lots of words],
  "eat": ["breakfast","dinner",....... lots of words..],
  .
  .
  .
  "lots of keys": [ .... ....]
}

如上所示,有大量数据分类。在遇到像gym这样的单词时,我需要在上面的例子中找到它的exercise类别。由于数据量巨大,双循环的强力方法很难解决问题。

这里可以应用什么算法?什么数据结构能有效地解决这个问题?

每个列表中的键和项目的数量会逐渐增加,但它将轻松超过一百万个键和包含这些项目的列表。

PS:我完全可以将当前结构转换为相关的数据结构然后应用所需的方法

2 个答案:

答案 0 :(得分:0)

您应该使用数据库并添加适当的索引。但是如果你真的想坚持使用这个对象,你可以使用oboe.js来避免在搜索之前解析整个文档。它在XML世界中与SAX类似。

请参阅http://oboejs.com/examples

上的“当我们有我们需要的东西时挂断”示例

答案 1 :(得分:0)

如果您可以将文件格式更改为json以外的其他格式,也许您可​​以将每个类别放在新行上,如csv文件(不带标题),其中行中的第一个值是类别键

例如:

exercise,running,walking,gym........
eat,breakfast,dinner,.......

现在,要找到包含关键字的类别:

  1. 搜索整个文件(使用grep之类的东西)并找到这些行 匹配
  2. 在每个匹配行中找到第一个值以获取类别键