Javascript localStorage:单独存储数据而不是一个大字符串?

Javascript localStorage:单独存储数据而不是一个大字符串?,javascript,cordova,typescript,local-storage,ionic2,Javascript,Cordova,Typescript,Local Storage,Ionic2,我想在本地存储中保存多个计数。 存储和检索多个小数据还是一个大数据更有效 例如: localStorage.setItem('id1', tally1); localStorage.setItem('id2', tally2); for(var i=0; i<tallyIds.length; i++){ this.tallies.push(tallyIds[i], localStorage.getItem(tallyIds[i])); } 我知道有些设备会定期自动清除本地存储中

我想在本地存储中保存多个计数。 存储和检索多个小数据还是一个大数据更有效

例如:

localStorage.setItem('id1', tally1);
localStorage.setItem('id2', tally2);

for(var i=0; i<tallyIds.length; i++){
    this.tallies.push(tallyIds[i], localStorage.getItem(tallyIds[i]));
}
我知道有些设备会定期自动清除本地存储中的一些数据。因此,单独存储每一个可能是有利的,在这种情况下,当这种情况发生时,可能只有一些会丢失-但是如果全部存储在一个大字符串中,那么如果/当设备决定清除它时,所有都会丢失


但是,在整个列表中循环(只有几百个项目)会慢得多吗?

几乎可以肯定,您应该更喜欢将计数存储为单个键下的数组。如果清除了localStorage,则单独存储计数

a。不太可能保存任何内容(例如,cmd localStorage.clear()将清除所有内容) B可能会导致令人困惑的情况,即您不确定是否所有数据都完好无损,或者只有部分数据丢失


另一方面,将计数存储为数组意味着您可以非常轻松地在其他操作中过滤、映射、排序和反转它们

对于您的特定情况,可能更容易将计数存储在一个本地存储键和值中(作为一个大字符串) 并使用JSON解析重新构造对象,添加到对象中,然后再次对其进行字符串化。这比按每个计分表将其拆分为不同的键要容易得多


如果您没有太多的数据层,因此确实需要一个真正的本地数据库(如IndexedDB),那么在这种情况下,一个键和一个JSON字符串值可能就可以了。

我所做的是根据应用程序的需要,为每个服务创建不同的对象。每个对象都与一个服务相关。该服务负责存储和检索数据。我只是使用服务而不是getItem和setItem管理本地存储。它将对象的大小最小化,以满足一项服务的需要。
localStorage.setItem('tallies', '[{"id1": tally1}, {"id2": tally2}"]');
this.tallies = JSON.parse(localStorage.getItem('tallies'));