如何在LocalStorage中访问对象内的数组长度

时间:2018-03-13 06:28:38

标签: javascript arrays local-storage javascript-objects

我遇到以下问题: 我在localStorage中的对象中有一个数组,我需要找到数组中包含的元素数。

我的代码如下

myDom.find(".parent").immediateText()

请原谅代码混乱

这是myh json文件的一个示例(采用Json格式(在进入循环之前进行字符串化)):

this is my 11 original text i 23 want

}

这段代码的问题是,每当我尝试使用父函数时,我都会遇到如下错误:

for (var i = 0; i < localPosts.length; i++){
        local_tags = window.localStorage.getItem(localStorage.key(i)).tags
        console.log(local_tags);
        for (var f = 0; f < local_tags.length; f++) { // <--- error occurs here
            tagf = local_tags[f]
            console.log(tagf);
            for (var j = 0; j < local_tags.length; j++) {
                if(tagf == tags[j]){
                    print_post(i);
                }
            }
        }
    }

并且local_tags的日志返回

{
"article1": {
    "title": "Hello World!",
    "desc": "This is the first post on this website!",
    "img": "",
    "id": 0,
    "tags": ["1", "3"]
},
"article2":{
    "title": "",
    "desc": "",
    "img": "",
    "id": 1,
    "tags": ["1","2"]
}

感谢您的帮助,我希望我解释得很好!

编辑:使错误在代码中更明显

EDIT2:澄清了JSON数据的字符串化

EDIT3:添加了整个Json文件

2 个答案:

答案 0 :(得分:0)

我认为问题是由标签数组

创建的
for (var j = 0; j < tags.length; j++) {
   if(tagf == tags[j]){
      print_post(i);
   }
}

未定义tags.length

答案 1 :(得分:0)

您的代码在第if(tagf == tags[j]){

处有一些错误

尝试以下代码,根据您的要求进行一些更改

window.localStorage.setItem("test_article1",JSON.stringify({"article1": { "title": "Hello World!", "desc": "This is the first post on this website!", "img": "", "id": 0, "tags": ["1", "3"]}}))
localPosts = ["test_article1"];
for (var i = 0; i < localPosts.length; i++){
        local_tags = JSON.parse(window.localStorage.getItem(localStorage.key(i)))["article1"]["tags"];
        console.log(local_tags);
        for (var f = 0; f < local_tags.length; f++) { // <--- error occurs here
            tagf = local_tags[f]
            console.log(tagf);
            for (var j = 0; j < local_tags.length; j++) {
                    console.log(local_tags[j]);
            }
        }
    }