我正在使用localStorage存储用户可能看到的一些数据,而某些数据则不允许查看。
现在我正在遍历整个localStorage以使数据显示在列表中,但问题是我的所有其他数据都附带了它(例如某些变量等等)
for (i = 0; i < tracks_recorded; i++) {
$("#history_tracklist").append("<li><a href='#track_info'>" + window.localStorage.key(i) + "</a></li>");
}
如何过滤localStorage的内容以隐藏“城市”键以显示?
谢谢!
答案 0 :(得分:1)
var $tracklist = $('#history_tracklist'),
$info = $('<li><a href='#track_info'></a></li>');
for (var i=0; i<localStorage.length; i++) {
var key = localStorage.key(i);
if (key !== 'City') {
$tracklist.append($info.clone().text(key));
}
}
哦,如果你正在寻找更简单的方法来使用localStorage或sessionStorage(包括命名空间来保持你的“私人”东西分开,你可以考虑使用像我这样的东西 https://github.com/nbubna/store图书馆。你并不只是因为你描述的简单案例而需要它,但如果事情变得更复杂,那么更丰富的API将会派上用场。
答案 1 :(得分:0)
首先,向@Nathan Bubna提示他的store2.js API。
现在,对于OPs问题:过滤本地存储内容。我建议使用localDataStorage,这是一个方便的实用程序,可让您透明地设置/获取以下任何类型&#34;:Array,Boolean,Date,Float,Integer,Null,Object或String。它还提供简单的数据加扰,智能字符串压缩,按键查询以及按值查询,并有助于在同一域中实施共享存储分段。
[免责声明]我是该实用程序的作者[/ DISCLAIMER]
示例:
localDataStorage.set( 'key1', 'Belgian' );
localDataStorage.set( 'key2', 1200.0047 );
localDataStorage.set( 'key3', true );
localDataStorage.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } );
localDataStorage.set( 'key5', null );
localDataStorage.get( 'key1' ); --> 'Belgian'
localDataStorage.get( 'key2' ); --> 1200.0047
localDataStorage.get( 'key3' ); --> true
localDataStorage.get( 'key4' ); --> Object {RSK: Array(5)}
localDataStorage.get( 'key5' ); --> null
如您所见,原始值得到尊重。现在,在您的情况下,我们可能希望存储一个城市&#39;以混淆形式输入密钥:
>localDataStorage.safeset( 'City', 'Portland', 'our-secret-key' );
这会混淆存储在本地存储中的数据。它不是很加密,但它肯定也不是明文。在我的机器中,它在存储中看起来像这样:
ڕ³¼П٠ࢭ\B۳ث
现在,当我们检索它时......
>localDataStorage.safeget( 'City', 'our-secret-key' ); -->
......我们会得到:
>"Portland"
正是我们开始使用的,让localDataStorage为我们保护数据。