如何访问 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