javascript - 使用 Javascript 循环遍历并从 JSON 表示法中提取项目值

标签 javascript json

我有以下 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: 或者,如果您只想迭代名称为 itemstest 的属性(您已经知道您的属性名称)感兴趣并且该值将是一个数组)。

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/

相关文章:

json - 多个 map[string] 接口(interface)并将它们映射到多个 json 文件 GOLANG

arrays - 在javascript中创建太多对象会影响性能吗?

javascript - 修补 FormBuilder 表单中的值并观察更改会导致无限循环

javascript - Google maps api 在 firefox 上不断加载

json - 在 JSON Web 服务中发送错误响应的最佳实践是什么?

python - 如何使 cerberus 所需规则取决于条件

Javascript 函数检查 JSON 对象上是否缺少日期

javascript - 如何使用 jscript 断言来过滤 Elmah 1.1 RC 中的异常类型?

javascript - 如何使 Bootstrap 4 导航栏使用 Flexbox

json - 在 Azure 数据工厂中解析复杂的 JSON