首页 > 解决方案 > javascript:具有大量空值的二维数组 VS 使用索引的对象数组

问题描述

我解析 看起来像这样的unicode 字符数据库(.txt):

0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;

...这对于 33 797 行

如您所见,它是某种 csv,wil;作为分隔符,您会注意到有很多空单元格 ( ;;;)。 我确切地说空单元格根据 row 变化

我以两种方式对其进行了解析,结果如下:

[
  ["0000","<control>","Cc","0","BN","","","","","N","NULL","","","",""],
  ["0001","<control>","Cc","0","BN","","","","","N","START OF HEADING","","","",""],
  ["0002","<control>","Cc","0","BN","","","","","N","START OF TEXT","","","",""],
  ["0003","<control>","Cc","0","BN","","","","","N","END OF TEXT","","","",""],
  ["0004","<control>","Cc","0","BN","","","","","N","END OF TRANSMISSION","","","",""],
  ["0005","<control>","Cc","0","BN","","","","","N","ENQUIRY","","","",""]
]

[
  {"0":"0000","1":"<control>","2":"Cc","3":"0","4":"BN","9":"N","10":"NULL"},
  {"0":"0001","1":"<control>","2":"Cc","3":"0","4":"BN","9":"N","10":"START OF HEADING"},
  {"0":"0002","1":"<control>","2":"Cc","3":"0","4":"BN","9":"N","10":"START OF TEXT"},
  {"0":"0003","1":"<control>","2":"Cc","3":"0","4":"BN","9":"N","10":"END OF TEXT"},
  {"0":"0004","1":"<control>","2":"Cc","3":"0","4":"BN","9":"N","10":"END OF TRANSMISSION"},
  {"0":"0005","1":"<control>","2":"Cc","3":"0","4":"BN","9":"N","10":"ENQUIRY"}
]

2个json文件(没有缩进!)在磁盘上占用大约相同的空间(~2.80Mo)

重要的是它将在 javascript 中使用的内存(它将加载到静态网站中)

我的第一个猜测是对象数组会更轻,因为可以将键转换为数字并且避免所有空单元格。不过,它需要更多的逻辑才能按顺序取出数据。

最好的方法是什么?你知道我可以用来确定这一点的工具或方法吗?也许你还有更好的选择?

标签: javascriptarraysmemory

解决方案


推荐阅读