将sessionStorage限制为x个条目
limit sessionStorage to x entries
本文关键字:sessionStorage 更新时间:2023-09-26
我像使用psuedo javascript控制台一样使用html5 sessionStorage,这样我就可以检索以前记录在那里的错误。我试图限制sessionStorage中的条目数量,这样我就不会因为超过了最大条目数量而删除最旧的条目,从而导致成千上万的条目。
我已经编写了以下javascript代码,但它不起作用——当超过最大计数时,它不会删除条目。
maxlen=100;
sessionlen=window.sessionStorage.length; // this returns the correct count
if(sessionlen>maxlen){
difference=sessionlen-maxlen; // this returns the correct difference
for(i=0;i<difference;i++){
window.sessionStorage.removeItem(0); // this isn't happening
}}
我可能错过了一些非常简单的东西。有人能帮忙吗?
你必须想象sessionStorage
是一个字典,其中每个值都由一个键映射,如果你想在超过最大计数后删除最旧的条目,你必须映射到像队列这样的数据,队列很容易在JavaScript中用数组实现(用Array.prototype.push()
推送,用Array.prototype.shift
弹出),然而,您的id并没有精确地映射到数组的索引(id可以是任何东西),那么使用另一个数据结构来保存您保存的id的顺序怎么样?让我们将时间结构称为idQueue
,每当达到最大容量或限制该阵列大小所需的任何东西时,您只需要pop
,即使用.shift
。由于这需要在sessionStorage
结构中复制,每个操作(推送和弹出)都在两个结构上完成:
var limit = 10;
var idQueue = [];
function pushToStorage(id, value) {
idQueue.push(id);
window.sessionStorage.setItem(id, value);
}
function popFromStorage() {
var oldest = idQueue.shift();
window.sessionStorage.removeItem(oldest);
}
function checkLength() {
while (idQueue.length > limit) {
popFromStorage();
}
}
相关文章:
- Javascript语法向设置发出sessionStorage值
- 可以't将sessionStorage设置为Javascript中的一个变量
- 比较sessionStorage值时,Javascript函数无法调用
- 在其他浏览器中打开页面时,令牌未保存在$window.sessionStorage中
- 将sessionStorage限制为x个条目
- 使用SessionStorage时出现Chrome InvalidStateError
- 如何使用HTML5中的sessionStorage概念在Javascript中打印对象数据
- sessionStorage赢得'不起作用
- 如果服务器上的会话已被禁用,是否仍可以使用Cookie或sessionStorage
- html5文件api,将用户选择的目录存储在sessionStorage中
- SessionStorage绑定事件
- JavaScript-使用sessionStorage保存文档之间共享的复选框状态
- 将sessionStorage(JSON)中的动态数据附加到Listview中
- HtmlUnit 和 jasmine-maven-plugin 是否支持 HTML5 sessionStorage?
- 检查 SessionStorage JavaScript 中是否存在 JSON 对象
- 从sessionStorage JavaScript中删除值
- html5 SessionStorage没有'不能在android模拟器中工作
- JavaScript计时问题-在设置sessionStorage值之前关闭窗口
- sessionStorage是'没有按预期工作
- sessionStorage登录变量的角度路由解析