2011-09-29 18 views
20

Tengo 2 aplicaciones que trabajan juntas con localstorage y me preguntaba cómo puedo eliminar todas las claves que comienzan con note- y todo-. Sé que localstorage.clear() lo borra todo, pero ese no es mi objetivo.HTML5 Localstorage & jQuery: Eliminar claves localstorage comenzando con una palabra determinada

Aquí es un ejemplo de lo que tengo en mi localStorage: enter image description here

Donde Quiero borrar todo el todo- * con un clic de botón y todos nota- * con el botón otra clic utilizando jQuery.

Muchas gracias

+1

http://stackoverflow.com/questions/3138564/looping-through-localstorage-in-html5-and-javascript –

Respuesta

40
Object.keys(localStorage) 
     .forEach(function(key){ 
      if (/^todo-|^note-/.test(key)) { 
       localStorage.removeItem(key); 
      } 
     }); 
+0

parece eliminar el único todo-de? Weird – jQuerybeast

+2

El RegEx debería ser '/^(?: todo- | nota -) /'. El '?:' Lo convertirá en un grupo no captor que acelerará un poco las cosas. '/^todo- |^note- /' debería funcionar también sin ninguna agrupación. –

+0

Parece que no es ese el problema. Creo que el problema está en la codificación de esa aplicación porque traté de eliminar el valor a través de Firebug y cuando actualizo, recupero el valor. – jQuerybeast

9

que utilizan un método similar al @Ghostoy, pero yo quería alimentarse en un parámetro, ya que esto le llamo desde varios lugares en mi código. No pude usar mi nombre de parámetro en una expresión regular, así que acabo de utilizar una subcadena.

function ClearSomeLocalStorage(startsWith) { 
    var myLength = startsWith.length; 

    Object.keys(localStorage) 
     .forEach(function(key){ 
      if (key.substring(0,myLength) == startsWith) { 
       localStorage.removeItem(key); 
      } 
     }); 
} 
Cuestiones relacionadas