2017-10-18 130 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); 
     }) 
    } 
}