![](/img/trans.png)
[英]Extract only values from JSON object in javascript without using a loop
[英]Loop through and extract item values from JSON notation using Javascript
我有以下JSON:
{"items":
[
{"id":"5054","nodeId":"3286"},
{"id":"8888","nodeId":"7777"},
{"id":"3421","nodeId":"1234"},
{"id":"8748","nodeId":"2435"}
]
}
当我单击页面上的按钮时,我想运行一个脚本,该脚本检索存储为JSON表示法的cookie的值,然后循环遍历该表示法中的项目,并将单击的按钮的id与存储的id进行比较在JSON中。 如果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时,返回undefined。
我在这里做错了什么? 任何帮助将不胜感激。
for (in)
循环遍历对象的属性名称 ,而不是属性values 。
var prop;
for (var p in test) {
prop = test[p];
console.log(p, prop, prop[0].id);
}
PS:或者,如果您只想使用test
名称items
遍历该属性(您已经知道您感兴趣的属性名称,并且该值将是一个数组)。
for (var i = 0, e = test.items.length; i < e; ++i) {
console.log(i, test.items[i], test.items[i].id);
}
您需要先向下钻取“项目”,然后才能遍历数组。
var cookieTest = '{"items":[{"id":"5054","nodeId":"3286"},{"id":"8888","nodeId":"7777"},{"id":"3421","nodeId":"1234"},{"id":"8748","nodeId":"2435"}]}';
// Check a cookie exists
if (cookieTest != null) {
var test = JSON.parse(cookieTest)
var items = test.items ? test.items : [];
for(thing in items) {
var current = items[thing];
console.log(current.id);
}
}
试试jQuery,看看它是否有效:
var obj = jQuery.parseJSON(cookieTest);
console.log(obj.items[0].id);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.