【发布时间】:2014-08-27 04:23:40
【问题描述】:
JSON 新手询问:给定以下 json 数据:
{
"Users": [
{
"userName": "Herbie",
"dates & times": [
{ "2014.08.01": "120.0" },
{ "2014.08.02": "123.0" },
{ "2014.08.03": "126.0" }
]
},
{
"userName": "Wayne",
"dates & times": [
{ "2014.08.01": "120.0" },
{ "2014.08.02": "123.0" },
{ "2014.08.03": "126.0" }
]
},
{
"userName": "Freddie",
"dates & times": [
{ "2014.08.01": "120.0" },
{ "2014.08.02": "123.0" },
{ "2014.08.03": "126.0" }
]
},
{
"userName": "Ron",
"dates & times": [
{ "2014.08.01": "120.0" },
{ "2014.08.02": "123.0" },
{ "2014.08.03": "126.0" }
]
},
{
"userName": "Tony",
"dates & times": [
{ "2014.08.01": "120.0" },
{ "2014.08.02": "123.0" },
{ "2014.08.03": "126.0" }
]
}
]
}
... 并希望检索指定用户的日期和时间数据以便可以呈现,例如:
Date 01: Time 01
Date 02: Time 02
Date 03: Time 03
我已经阅读了很多关于循环遍历数组和对象的内容,但是如果键是唯一的,我仍然对如何获取日期和时间(或任何键/值)感到困惑。到目前为止,我有这个:
var usersArray = myObj["Users"];
for (var user in usersArray){
if (!usersArray[user].userName == selUser) {
alert("user not found");
}
else if (usersArray[user].userName == selUser) {
var datesAndTimesArray = usersArray[user]["dates & times"];
console.log(selUser +"'s dates & times: " + datesAndTimesArray); // returns array of objects
}
}
for (var someKey in datesAndTimesArray){
// here's where I'm struggling, trying to get all the dates & times for the selected user, such that I can render it as described above
// pseudo-code
}
顺便说一句:学习 javascript,不使用 jquery 等。
非常感谢,
svs
【问题讨论】:
-
去掉
alert。如果您正在寻找Freddie,当循环查看 Herbie 和 Wayne 之前,您会提醒“未找到用户”。当你找到你想要的用户时使用break。 -
另外,使用
for循环来循环数组,而不是for..in。 -
不要使用
for ... in循环在 JavaScript 中遍历数组。使用普通的for循环和索引变量来显式计算属性,或者使用.forEach()方法。 -
@Barmar 谢谢,但实际上我得到了选定的用户 :) 我要解决的问题是获取 sel 用户的所有(日期和时间)对象中的所有数据。感谢您使用 break 的提示。
-
如果键是唯一的,
date & time应该是单个对象,而不是每个具有一个属性的对象数组。然后for (var someKey in datesAndTimesArray){就可以正常工作了。
标签: javascript json