开发者问题收集

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

2018-03-13
68

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

我的代码如下

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

请原谅代码混乱

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

{
"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"]
}

>

此代码的问题是,每当我尝试访问父函数时,我都会收到如下错误:

Uncaught TypeError: Cannot read property 'length' of undefined

并且 local_tags 的日志返回

undefined

谢谢您的帮助,希望我解释清楚了!

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

编辑2:澄清 JSON 数据已字符串化

编辑3:添加了整个 Json 文件

2个回答

您的代码有一些错误,位于 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]);
            }
        }
    }
Alpesh Jikadra
2018-03-13

我认为问题是由 tags 数组引起的

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

没有定义 tags.length

hazrat
2018-03-13