过滤localStorage中的内容

时间:2013-05-14 10:13:05

标签: filter local-storage

我正在使用localStorage存储用户可能看到的一些数据,而某些数据则不允许查看。

现在我正在遍历整个localStorage以使数据显示在列表中,但问题是我的所有其他数据都附带了它(例如某些变量等等)

for (i = 0; i < tracks_recorded; i++) {
    $("#history_tracklist").append("<li><a href='#track_info'>" + window.localStorage.key(i) + "</a></li>");
}

如何过滤localStorage的内容以隐藏“城市”键以显示?

谢谢!

2 个答案:

答案 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为我们保护数据。