localStorage:单独存储数据VS一个大字符串?

时间:2017-01-30 03:49:36

标签: javascript cordova typescript local-storage ionic2

我想在localStorage中保留多个标签。 存储和检索几个小数据或一个大数据是否更有效?

EG。这样:

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('tallies', '[{"id1": tally1}, {"id2": tally2}"]');
this.tallies = JSON.parse(localStorage.getItem('tallies'));

我知道有些设备会定期自动清除localStorage中的一些数据。因此,单独存储每一个可能是有利的,在这种情况下可能只有一些会丢失 - 但如果存储在一个大字符串中,那么如果/当设备决定清除它时,全部都会丢失。

然而,循环遍历整个列表(只有几百个项目)会慢一些吗?

2 个答案:

答案 0 :(得分:1)

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

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

从好的方面来说,将标签存储为数组意味着您可以非常轻松地对其他操作进行过滤,映射,排序和反转。

答案 1 :(得分:1)

对于您的特定情况,将标签存储在一个localStorage键和值(作为一个大字符串)可能更容易 并使用JSON解析来重建您的对象,添加它,然后再将其字符串化。将每个标签拆分为不同的键会更容易。

如果你没有这么多的数据层,你真的需要一个真正的本地数据库,比如IndexedDB,那么在这种情况下,单个密钥和JSON字符串值就可以了。