替代CSV数组转换以更快地获取数据

时间:2018-10-06 08:07:05

标签: javascript database cordova csv phonegap

我使用Cordova / PhoneGap构建了一个应用程序,并使用了幼稚的方法来获取数据。我只是将两个(制表符分隔的)CSV文件转换为数组,然后在这些数组上运行了一些查找功能(未显示)。

    // Load the rankings.csv file and define its parameters.
var requests = new XMLHttpRequest(); // You only need one XMLHttpRequest() object.
requests.open("GET", "docs/rankings.csv", false);
requests.send(null);
var l2Ranks = [];
var jsoRanks = requests.responseText.split("\n");
for (x = 0; x < jsoRanks.length; x++) {
  l2Ranks.push(jsoRanks[x].split("\t"));
  for (y = 0; y < l2Ranks.length; y++) {
    for (z = 0; z < l2Ranks[y].length; z++) {
      l2Ranks[y][z] = Number(l2Ranks[y][z]);
    }
  }
}
// Load the sentences.csv file and define its parameters.
requests.open("GET", "docs/sentences.csv", false);
requests.send(null);
var l2Sents = [];
var jsoSents = requests.responseText.split("\n");
for (x = 0; x < jsoSents.length; x++) {
  l2Sents.push(jsoSents[x].split("\t"));
  for (y = 0; y < l2Sents.length; y++) {
    l2Sents[y][0] = Number(l2Sents[y][0]);
  }
}

现在,当CSV文件较小时,此方法可以正常工作。但是,加载时间已变得明显更长。我最初打算使用加载屏幕来屏蔽它,但是我怀疑有一种更快的方法可以有效地加载我的数据。

所以我考虑了一些选择:

  1. 我可以尝试使用csv-streamfast-csv进行CSV流传输,但是我还没有看到如何通过此方法获取数据的示例。
  2. 我可以将CSV文件转换为JSON文件,然后直接运行这些文件,但不知道它的速度有什么好处。
  3. 我可以对CSV文件进行正则表达式文本搜索,但是同样,我不知道是否不断打开大小为5MB并不断增长的文件会使它更快。

其中哪些会更快?另外,关于选项(1),简单的查找功能(类似于电子表格软件中的INDEX(MATCH()))会是什么样?

当前,我的其他函数(未显示)找到l2Ranks的指定列,获取其ID号(l2Ranks和l2Sents中的第0个项目),然后返回与相同的指定列和包含ID号的行。那里的减速速度为零。

0 个答案:

没有答案