获取stringify对象键值的值

时间:2017-10-18 08:54:01

标签: javascript json local-storage

我在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) [{…}, {…}, {…}]'

3 个答案:

答案 0 :(得分:0)

您应首先解析它,然后从数组中获取它。

考虑var stringy是您从本地存储中获取的数据,请将其替换为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>

答案 1 :(得分:0)

一般情况下,我会创建单独的服务 存储它应该在save上进行stringify,在get上进行JSON.parse 它也应该有内部缓存对象 - 解析对象或未定义,如果对象不在缓存中,应该从localStorage中提取和解析

如果您了解性能,并且由于对象太大或类似而无法使用JSON.parse,我会尝试将描述保存在单独的键值对中 喜欢

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

有可能仅通过descriptionKey检索描述而无需解析所有对象

答案 2 :(得分:0)

我试图理解你的问题,但我不确定我是否做过,仍然假设你将整个List / Array保存为单个LocalStorageItem中的一个项目,你将在一个项目中有多个描述,因此有多个数组,并且每个数组都有多个对象因此有多个描述,这是我解决这个问题的方法,如果你解释得更多,我会编辑相同的。

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);
         })
    }
}