我想在localStorage中保留多个计数。存储和检索多个小数据还是一个大数据更有效?
例如:
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'));
我知道有些设备会定期自动清除本地存储中的一些数据。因此,单独存储每个可能是有利的,在这种情况下,可能只有一些会丢失 - 但如果全部存储在一个大字符串中,那么如果/当设备决定清除它时,所有内容都会丢失。
但是,循环遍历整个列表(只有几百个项目)会慢得多吗?
几乎可以肯定的是,您应该更愿意将计数存储为单个键下的数组。 如果清除了本地存储,则独立存储计数
a. 不太可能保存其中任何一个(例如,cmd localStorage.clear() 会清除所有内容) b.可能会导致令人困惑的情况,即您不确定是否所有数据是否真的完好无损或仅丢失了部分数据。
从好的方面来说,将计数存储为数组意味着您可以非常轻松地在其他操作中过滤、映射、排序和反转它们。
对于您的特定情况,将计数存储在一个 localStorage 键和值(作为大字符串)中可能更容易并使用 JSON 解析来重建对象,添加到对象,然后再次字符串化。这比按每个计数将其拆分为不同的键更容易。
如果你没有太多的数据层,以至于你真的需要一个真正的本地数据库,比如 IndexedDB,在这种情况下,单个键和一个 JSON 字符串值可能是可以的。