在angujarjs过滤〜6mb JSON对象,不好主意?

时间:2016-06-01 00:11:04

标签: javascript angularjs json csv ionic-framework

我正在做条形码扫描仪。我从客户端获得的唯一数据是“产品”csv 6mb文件。

我可以将CSV解析为JSON对象,然后检索条形码,并在6mb内存中的javascript对象中找到相应的项目。这是个坏主意吗?在这种情况下,文件应该对性能有多大影响?

如果我将其变成Ionic应用程序怎么办?会更糟吗?

我知道编写一个小的api服务器进行查询会更好,但这是否真的有必要?

编辑:文件由角度服务下载一次,将整个文件保存在变量中(直到应用程序关闭)。过滤将在内存中的对象上进行。

1 个答案:

答案 0 :(得分:0)

首先,如果可能,您应该在将数据带入应用程序之前准备好数据。不要将原始CSV读入您的应用程序。创建一个预先排序的.json文件,可能还有另一个.json来保存预索引数据。

其次,我会看到一个简单的循环可以获得什么样的性能。它可能足以满足您的需求。

如果您想尝试预先索引数据。它可能是一个看起来像这样的对象,它找到了每万分之一的UPC并将其值写入一个对象。

var preIndex = [
    //{"limit" : at what index is, value: UPC value},
    {"limit" : 0 , value: 00000001234},
    {"limit" : 10000, value: 00009871234},
    {"limit" : 20000, value: 00019938234},
    ....
]

然后,您的代码需要找到UPC周围的限制。

 //find value of X where 
 preIndex[x].value < YourUPC <= preIndex[x+1].value

 //now you only need to loop through 10 thousand items maximum
 //to find your item.
 for(var i = preIndex[x].limit; i <= preIndex[x+1].limit; i++){
     ... // if(myData[i].UPC == YourUPC)
 }