我正在做条形码扫描仪。我从客户端获得的唯一数据是“产品”csv 6mb文件。
我可以将CSV解析为JSON对象,然后检索条形码,并在6mb内存中的javascript对象中找到相应的项目。这是个坏主意吗?在这种情况下,文件应该对性能有多大影响?
如果我将其变成Ionic应用程序怎么办?会更糟吗?
我知道编写一个小的api服务器进行查询会更好,但这是否真的有必要?
编辑:文件由角度服务下载一次,将整个文件保存在变量中(直到应用程序关闭)。过滤将在内存中的对象上进行。
答案 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)
}