0

我正在使用 localStorage 来存储一些用户可能看到的数据和一些不允许看到的数据。

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

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

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

谢谢!

4

2 回答 2

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 将派上用场。

于 2013-05-14T17:19:59.243 回答
0

首先,向@Nathan Bubna 致敬他的 store2.js API。

现在,对于 OP 的问题:过滤本地存储内容。我可以建议使用localDataStorage 吗,这是一个方便的实用程序,可让您透明地设置/获取以下任何“类型”:数组、布尔值、日期、浮点数、整数、空值、对象或字符串。它还提供简单的数据加扰、智能字符串压缩、按键查询和值查询,并有助于在同一域中实施共享存储分段。

[免责声明] 我是该实用程序的作者 [/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

如您所见,原始值受到尊重。现在,在您的情况下,我们可能希望以模糊的形式存储“城市”密钥:

>localDataStorage.safeset( 'City', 'Portland', 'our-secret-key' );

这会混淆存储在本地存储中的数据。它没有完全加密,但它当然也不是明文。在我的机器中,它在存储中看起来像这样:

ڕ³¼୎П٠ࢭ\B۳ث

现在,当我们检索它时...

>localDataStorage.safeget( 'City', 'our-secret-key' );  -->

... 我们将得到:

>"Portland" 

正是我们开始的方式,让 localDataStorage 为我们保护数据。

于 2017-07-17T19:42:09.393 回答