有没有办法删除所有sessionStorage项目与键匹配某个模式?

Jes*_*son 16 javascript browser sessionstorage

比方说,我sessionStorage有三个对象是谁的键foo,foobarbaz.有没有办法可以调用.removeItem或以某种方式删除sessionStorage谁的密钥匹配的所有项目foo?在这个例子中,我只剩下关键项目baz.

rol*_*and 36

2014年9月20日更新正如Jordan Trudgett所指出的,反向循环更合适

因为你只能实现以编程方式sessionStorage公开了一组有限的方法:getItem(key),setItem(key, value),removeItem(key),key(position),clear()length():

var n = sessionStorage.length;
while(n--) {
  var key = sessionStorage.key(n);
  if(/foo/.test(key)) {
    sessionStorage.removeItem(key);
  }  
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Nicholas C. Zakas的博客文章:

http://www.nczonline.net/blog/2009/07/21/introduction-to-sessionstorage/

  • 您应该以相反的顺序迭代存储对象,因为当您删除该项时,索引会更改.这样做可能会遗漏一些项目. (6认同)

Poi*_*nty 10

你可以做点什么

Object.keys(sessionStorage)
  .filter(function(k) { return /foo/.test(k); })
  .forEach(function(k) {
    sessionStorage.removeItem(k);
  });
Run Code Online (Sandbox Code Playgroud)