Search on siteStorage

1

Well I need to do a search on the localStorage, and in this I need to know which item to get with a particular character, for example:

Quero pegar todos as key que começão com pes_ ou seja no exemplo abaixo eu pegaria.
---- KEY ----------|------ VALUE ------
pes_918239812938   | {OBJ 1}
pes_123123121214   | {obj 2}
cel_13             | {obj 3}

No caso acima ele teria que mostras pes_918239812938, pes_123123121214 

I've already done the search using a foreach but passing what I want itself, my idea is to mount a function that if I pass it to pes_ like in the example it returns me all and if in case I send

function fnc_PesquisaBD(key){
  var output = "";
  for (key in localStorage){  
      output += key + "\n" ; 
      output += localStorage [ key ]+ "\n" ; 
      output +=  "\n" ; 
  }
  return output;
}

How do I do this?

THE RESPONSE REPORTED BY OUR FRIEND @SERGIO DOES NOT SATISFY ALL QUESTIONS ABOUT MY QUESTION. THE PROBLEM IS WHEN I HAVE TO TAKE SEVERAL TUPLAS.

var pessoasCelulas = getData("pescel_");
pessoasCelulas = pessoasCelulas[0];

console.log(pessoasCelulas);
for(var i = 0; i < pessoasCelulas.length; i++){
    if(pessoasCelulas[i].COD_IDENT_CELUL == w_codigo_celula){
        var pessoa = getData("pes_" +pessoasCelulas[i].COD_IDENT_PESSO);
            pessoa = pessoa[0];
        w_elemento = [pessoa.TXT_NOMEX_PESSO, pessoa.COD_IDENT_PESSO, pessoasCelulas[i].FLG_IDENT_PESSO, pessoa.FLG_STATU_PESSO, pessoasCelulas[i].FLG_STATU_PARTC];
        arrayConfig.push(w_elemento);
        console.log(arrayConfig);
    }

}

THIS CODE I USE TO SEARCH ALL PEOPLE OF A CERTAIN CELL, BUT IT IS RETURNING ME THE FOLLOWING ON THE CONSOLE.

ACCORDINGTOWHAT'SINMYLOCALSTORAGEIMUSTRETURN3REGISTRATION.

ThecodeIamusingtosearchthesiteis:

functiongetData(chave){returnObject.keys(localStorage).filter(function(key){returnkey.indexOf(chave)==0;}).map(function(key){returnJSON.parse(localStorage[key]);});}

To"solve" the above problem I needed to do a lot of maneuver due to the code is returning ARRAY INSIDE ARRAY:

    var pessoasCelulas = getData("pescel_");
for(var i = 0; i < pessoasCelulas.length; i++){
    if(pessoasCelulas[i][0].COD_IDENT_CELUL == w_codigo_celula){
        var pessoa = getData("pes_" +pessoasCelulas[i][0].COD_IDENT_PESSO);
            pessoa = pessoa[0][0];
        w_elemento = [pessoa.TXT_NOMEX_PESSO, pessoa.COD_IDENT_PESSO, pessoasCelulas[i][0].FLG_IDENT_PESSO, pessoa.FLG_STATU_PESSO, pessoasCelulas[i][0].FLG_STATU_PARTC];
        arrayConfig.push(w_elemento);
    }

}
    
asked by anonymous 10.05.2016 / 21:54

1 answer

3

You can do a function that looks for keys depending on the argument you pass. Something like this:

localStorage.pes_54321 = '{"baz":"biz"}';
localStorage.pes_12345 = '{"foo":"bar"}';

function getData(chave) {
    return Object.keys(localStorage).filter(function(key) {
        return key.indexOf(chave) == 0;
    }).map(function(key) {
        return JSON.parse(localStorage[key]);
    });
}
console.log(JSON.stringify(getData('pes'))); // [{"foo":"bar"},{"baz":"biz"}]
console.log(JSON.stringify(getData('pes_54321'))); // [{"baz":"biz"}]

This function returns all keys that begin with the string that you pass to the function. Return is an array, then you can use it as you need it.

jsFiddle: link

    
10.05.2016 / 22:12