javascript - 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 中使用的内存(它将加载到静态网站中)
我的第一个猜测是对象数组会更轻,因为可以将键转换为数字并且避免所有空单元格。不过,它需要更多的逻辑才能按顺序取出数据。
最好的方法是什么?你知道我可以用来确定这一点的工具或方法吗?也许你还有更好的选择?
解决方案
推荐阅读
- visual-studio - Android Emulator doesnt start under hyper-V VM
- spring - spring boot gradle build(war) 时,可以把静态文件放到根目录下吗?
- google-apps-script - 是否可以让一个复选框打开/关闭另一个复选框?
- ios - 信号 SIGABRT,运行时/cgo:在模拟器上运行时无法获取 pthread_keys
- powershell - 如何使用 Powershell 向 Windows 服务器添加角色和功能?
- c++ - Doxygen:如何处理复合中的匿名成员
- javascript - 当我仅将边框半径应用于视图的一侧时,React Native 中出现奇怪的变色
- git - GitHub:我可以查看我是否对分叉进行了更改吗?
- php - 本地环境中drupal 8的目录权限设置
- python - 重复的行合并在一行中,在熊猫中添加新列