2017-05-14 2 views
2

私のアプリのローカルストレージに大量のデータを格納する必要があります。私はそれを保存するのに成功しています。今、私は配列のデータをフェッチする必要がありますが、選択されたキー/値のすべてではなく、1つだけです。私はこれらのキーを以下に示すように "セクション" + idと命名しました。これらを配列で選択する必要があります。 enter image description here選択したキー値のローカルストレージからデータを取得するために使用できるクエリ

+0

localStorage.getItem(key); – Shiladitya

答えて

2

localStorage.getItem(key)あなたが提供するキーのデータを返します。 localStorageのデータはシリアル化されているため、JSON.parse(data)と解析してプレーンなJSオブジェクトに変換し、他のオブジェクトとして扱うことができます。

localStorage.getItemで1つの項目しか取得できないので、配列内に複数の項目を取得するには、それぞれをループして個別に取得し、配列に配置する必要があります。このような
多分何か:

var keys = Object.keys(localStorage).filter(function(key) { 
    return /^section\d+$/.test(key); 
}); 

var dataArray = keys.map(function(key) { 
    return JSON.parse(localStorage.getItem(key)); 
}); 

まず、我々はfilter機能を持つすべての「セクション###」のキーを取得します。その後、map関数を使用して、対応する各項目のデータを含む新しい配列を作成します。

+0

私は上で説明したものを動的に選択する必要がありますが、このコードを理解できません。 '/^section \ d + $ /。test(key);'、コンソールで10 true、2 false。私はそれらをそれぞれの配列で取得する方法を私に案内してもらえますか? – user2828442

+0

@ user2828442それは "section"と "section323"にマッチするように "section" 「sectionTypes」や「templateType」などのキーと一致しません。あなたが望むパターンであるスクリーンショットからそれを取り出しました。このチェックは 'filter'関数の条件として使用されるので、' keys'配列には、これらのすべての項目のデータを取得して解析する際に使用する "section ###"キーしか含まれません。 –

+0

ありがとう、これは私が探していたものです、魅力のように動作します – user2828442

0

このコードを試してください。私はそれを編集しました。

var keys = []; 
var data = []; 

for (var key in localStorage) { 
    if (key.indexOf("section") > -1) 
    keys.push(key); 
} 

for (var i in keys) { 
    data.push(localStorage.getItem(keys[i])) 
} 
+0

しかし、私はキーの名前を知っていない、私はセクション+いくつかのキーを選択する必要があります。ループの中で、それに応じてあなたのソリューションを更新することができます – user2828442

+0

配列内のすべてのデータを取得したいのですか? –

+0

@ AbhinavS.Chauhan data.pushを最初のforループの中に入れます。したがって、最後のforループは、最初のものの半分実行される可能性があります。 –

関連する問題