Arrays 我能以更有效的方式组织这些数据吗?

Arrays 我能以更有效的方式组织这些数据吗?,arrays,indexing,big-o,Arrays,Indexing,Big O,我正在使用动态筛选实现一系列研究项目。我在数据库中有一组表,表示它们与字段的多对多关系,如首席调查员和资助者 因为我希望过滤是动态的,所以我将所有这些数据放在前端并存储在浏览器中,然后用javascript过滤这些数据 目前,我正在提取的数据具有以下结构: research_projects = { "RPGUID1": { "title":"blah", "summary":"balh", "description":"blah

我正在使用动态筛选实现一系列
研究项目
。我在数据库中有一组表,表示它们与字段的多对多关系,如
首席调查员
资助者

因为我希望过滤是动态的,所以我将所有这些数据放在前端并存储在浏览器中,然后用javascript过滤这些数据

目前,我正在提取的数据具有以下结构:

research_projects = 
{
    "RPGUID1":
    {
        "title":"blah",
        "summary":"balh",
        "description":"blah",
        etc...
    },
    "RPGUID2":
    {
        "title":"blah2",
        etc...
    },
    ...
}
principal_investigators = 
{
    "12345":
    {
        "name":"John D",
        "slug":"john-d",
        "research_projects":["RPGUID2"]
    },
    ...
}
funders = 
{
    "aaaa":
    {
        "name":"funder A",
        "slug":"funder-a",
        "research_projects":["RPGUID1", "RPGUID2"]
    },
    ...
}
我选择这种安排是为了避免在线性时间内搜索主要的
research\u项目

虽然这种结构可以单独用于过滤,但对于我想要的其他功能来说,它效率相当低

下面是函数列表,以及它们在当前结构中的时间复杂性。我需要以尽可能多地优化这些功能的方式重新构造此数据:

  • 根据
    id
    • O(1)
  • 获取给定
    资助者的所有
    研究项目
    • O(1)查找,在
      资助者[研究项目]的大小上呈线性
  • 获取给定
    研究项目的所有
    资助者
    • 资助者的规模呈线性
    和资助者[研究项目]
  • 根据
    id
    • O(1)
  • 获取
    资金方
    id
    ,给定其
    slug
    • 资助者的规模中呈线性
  • 每当用户选择一个新的过滤器时,所有这些函数都需要多次运行,这就是为什么我正在寻找替代解决方案的原因


    感谢

    好的,数据库的最大优势之一是索引和其他高效算法(例如使用哈希等),一旦加载所有数据,就必须重新实现所有这些算法以获得非常好的性能。。。但这意味着增加内存占用。。。您正在处理多少数据?这对于决定如何处理数据结构非常重要。。。