我有以下 JSON:
{"items":
[
{"id":"5054","nodeId":"3286"},
{"id":"8888","nodeId":"7777"},
{"id":"3421","nodeId":"1234"},
{"id":"8748","nodeId":"2435"}
]
}
当我单击页面上的按钮时,我想运行一个脚本来检索以 JSON 表示法存储的 cookie 的值,然后循环遍历表示法中的项目,并将单击的按钮的 id 与存储在 JSON 中的 id。如果 id 匹配,则不执行任何操作。如果没有,则应将新项目添加到 JSON 对象并保存回 cookie,以便服务器下次加载页面时,显示不同的内容。
向现有 JSON 表示法添加新项目很简单,我已经有了相应的代码。问题是,我的循环 JSON 表示法的代码似乎不起作用:
var cookieTest = getCookie("wishlist"); /* JSON */
// Check a cookie exists
if (cookieTest != null) {
var test = JSON.parse(cookieTest)
for (prop in test) {
console.log(prop);
console.log(prop[0].id);
}
}
第一个 console.log 似乎返回项目,但是当我尝试返回数组中第一个项目的 id 时,返回未定义。
我在这里做错了什么?任何帮助将不胜感激。
最佳答案
for (in)
循环迭代对象的属性名称,而不是属性值。
var prop;
for (var p in test) {
prop = test[p];
console.log(p, prop, prop[0].id);
}
PS: 或者,如果您只想迭代名称为 items
为 test
的属性(您已经知道您的属性名称)感兴趣并且该值将是一个数组)。
for (var i = 0, e = test.items.length; i < e; ++i) {
console.log(i, test.items[i], test.items[i].id);
}
关于javascript - 使用 Javascript 循环遍历并从 JSON 表示法中提取项目值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454050/