2017-10-18 41 views
-3

我保存localStorage的一些項目,並在存放前,字符串化的關鍵值的對象鍵值的數值。獲得被字符串化

localStorage.setItem(this.set_name, JSON.stringify(this.description)) 

這給了我鑰匙:

item1 Value: [{"description": "some description that was store"}, {"description": "some description that was store"}] 

當我得到JSON.parse鍵值返回爲目標對象的要求,因此,沒有做JSON.parse它將返回整個價值不變。

我想要做的就是回到什麼是隻有說明書中,「一些介紹,這是店」,而不是整個值內。

我會怎麼做呢?

function loadStorage() { 
    $itemSection = $("#item-section-set"); 
    var keys = Object.keys(localStorage), 
     i = 0, 
     key; 
    for (; key = keys[i]; i++) { 
     let itemDesc = localStorage.getItem(key); 
     console.log(JSON.parse(itemDesc)) 
    } 
} 

控制檯給我'(3) [{…}, {…}, {…}]'

+1

請問您能否給出一個更清晰的例子,說明您想要什麼,以及您目前正在獲得什麼? – evolutionxbox

+1

你在代碼中使用了哪個'JSON.parse'? –

+0

這豈不是更容易只保存'[「一些介紹,這是店」,「一些介紹,這是商店」]' –

回答

0

你應該先分析它,然後從陣列中獲取它。

考慮到var stringy你想從你的localStorage獲得了數據,與localStorage.getItem(<your key>);

var stringy = "[{\"description\": \"some description that was store 1\"}, {\"description\": \"some description that was store 2\"}]" 
 

 
var parsedArray = JSON.parse(stringy); 
 

 
for(var i = 0; i < parsedArray.length; i++){ 
 
    document.getElementById('area').innerHTML += '<p>'+parsedArray[i].description+'</p>'; 
 
}
<div id="area"></div>

0

一般更換它我會創造像 存儲單獨的服務應該使字符串化的保存和JSON.parse得到 也應該有內部緩存對象 - 分析對象或undefined如果對象不在緩存中,應該從localStorage中提取和解析

,如果你知道有關性能,並且不能使用JSON.parse由於過大的物體或類似的,我會盡量保存在單獨的鍵值對 的描述,如

localStorage.setItem(this.set_name, JSON.stringify(this.description)); localStorage.setItem(this.set_name+'_'+this.descriptionKey,JSON.stringify(this.description))

有可能通過descriptionKey檢索描述而不解析所有對象

0

我試着理解你的問題,但m不知道如果我這樣做,仍然假設,你將整個List/Array保存爲一個項目在單個LocalStorageItem ,你將在一個項目中有多個描述,所以e是多個數組,每個數組都有多個對象,因此有多個描述,繼承我對這個問題的解決方案,如果你解釋更多,我會編輯它。

function loadStorage() { 
    $itemSection = $("#item-section-set"); 
    var keys = Object.keys(localStorage), 
    i = 0, 
    key; 
    for (; key = keys[i]; i++) { 
     let itemDesc = localStorage.getItem(key); 
     var oneLocalStorageItem = JSON.parse(itemDesc); 
     oneLocalStorageItem.map(function(oneObjectItem){ 
      console.log(oneObjectItem.description); 
     }) 
    } 
}