Javascript 构造用于查询的JSON数据的有效方法

Javascript 构造用于查询的JSON数据的有效方法,javascript,arrays,json,csv,data-structures,Javascript,Arrays,Json,Csv,Data Structures,我正试图找到一种高效的方法,将静态数据存储在JSON中,以便在客户端查询中使用 目前,该数据由大约60个CSV文件组成,每个文件大约有2000-2200个条目。我在服务器端解析这个数据,并有一个Web服务来处理来自客户端的查询。如前所述,我希望能够将其移动到客户端,以便web应用程序可以使用应用程序缓存离线工作 下面是一个小样本数据: Battle Axe,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 150,19EK,21EK,23EK,

我正试图找到一种高效的方法,将静态数据存储在JSON中,以便在客户端查询中使用

目前,该数据由大约60个CSV文件组成,每个文件大约有2000-2200个条目。我在服务器端解析这个数据,并有一个Web服务来处理来自客户端的查询。如前所述,我希望能够将其移动到客户端,以便web应用程序可以使用应用程序缓存离线工作

下面是一个小样本数据:

Battle Axe,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
150,19EK,21EK,23EK,25EK,33ES,33ES,36ES,36ES,34ES,36ES,40ES,40ES,34ES,34ES,39ES,42ES,38ES,41ES,44ES,46ES
149,19ES,21ES,23ES,25ES,33ES,33ES,36ES,36ES,34ES,36ES,40ES,40ES,34ES,34ES,39ES,42ES,38ES,41ES,44ES,46ES
148,19EK,21EK,23EK,25EK,33ES,33ES,36ES,36ES,34ES,36ES,39ES,40ES,34ES,34ES,39ES,42ES,37ES,40ES,44ES,45ES
147,19ES,21ES,23ES,25ES,33ES,32ES,35ES,35ES,33ES,35ES,39ES,39ES,33ES,33ES,38ES,41ES,37ES,40ES,43ES,45ES
我最初尝试转换为JSON的原因如下:

  • 每个文件都是一个JSON对象(让我们称这个对象为“武器”)
  • 文件中的每一行都是另一个JSON对象,存储在相应武器对象下的数组中
  • 行的每个条目都存储在row对象下的固定长度数组中
  • 所有“武器”对象都存储在一个数组中
这意味着我有一个由大约60个对象组成的数组,而这些对象中平均存储了100个对象。这100个对象中的每一个都有一个由20个对象组成的数组,每个条目由实际值和一些额外的元数据组成。正如你所看到的,我已经在120K的对象。。。生成的精简json字符串为3mb。小样本如下:

var weapon = 
{
 Name: 'Broadsword',
 HitEntries: [ 
 {
    High: 150,
    Low: 150,
    Unmodified: false,
    Hits: [ { Hits: '12', Critical: 'CK', Fail: false},...,{ Hits: '1', Critical: '', Fail: false}]
 }, 
 ...
 {
    High: 50,
    Low: 47,
    Unmodified: false,
    Hits: [ { Hits: '3', Critical: '', Fail: false}] 
 }
 ]
}
下面是将要运行的查询的示例。它将基于上面显示的示例数据csv:

  • 选择战斗斧武器
  • 为卷(行)选择值147
  • 铠装类型(列标题)选择的值为9
上述结果应为39ES(行和标题之间的交叉引用)


在这一点上,我决定在走这条路之前征求一些建议可能是个好主意。欢迎任何输入=)

您可以在此处进行一些优化:

  • 如果可能,请使用WebSocket来传输数据
  • 将数据转换为TypedArrays(BLOB)-最终将处理类似于10K文件的内容
  • 如果需要,使用索引数据库进行查询

  • 微风与你的兴趣相关吗?Rich data for JavaScript apps是BreezeI在查询部分研究了Breeze和jLinq,但在这个阶段,我更感兴趣的是确保我拥有最高效的数据结构,因为这种数据效率是数据结构和查询算法的组合,我认为,除非您知道如何查询数据,否则您无法在优化查询数据方面做得特别有效。还有,多少优化就足够了?除非你得到一些性能指标,否则你不会知道这一点。你可能正在尝试在这里应用一些过早的优化?也许。我想目前我无法摆脱数据的规模。我来试试看,看我怎么做