Javascript 获取所有钥匙&;它们的值来自JSON数组中的嵌套对象(w/out jQuery)
JSON新手提问:给定以下JSON数据:Javascript 获取所有钥匙&;它们的值来自JSON数组中的嵌套对象(w/out jQuery),javascript,json,Javascript,Json,JSON新手提问:给定以下JSON数据: { "Users": [ { "userName": "Herbie", "dates & times": [ { "2014.08.01": "120.0" }, { "2014.08.02": "123.0" }, { "2014.08.03": "126.0" }
{
"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因为
datesAndTimesArray
是一个对象数组,所以需要一个嵌套循环来处理它
for (var i in datesAndTimesArray) {
var obj = datesAndTimesArray[i];
for (var date in obj) {
console.log('Date ' + date + ': Time' + obj[date]);
}
}
日期和时间最好是单个对象,而不是数组,例如
"dates & times": {
"2014.08.01": "120.0",
"2014.08.02": "123.0",
"2014.08.03": "126.0"
}
然后只需对(date in datesAndTimesArray中的日期)执行
,只需清除警报即可。如果您正在查找Freddie,当循环看到他前面的Herbie和Wayne时,您会提醒“user not found”。当您找到所需的用户时,请使用break
。此外,对于循环到循环数组,请使用,而不是for..in
。不要将用于。。。在
循环中迭代JavaScript中的数组。使用一个普通的for
循环和一个索引变量来显式地计算属性,或者使用.forEach()
方法。@Barmar谢谢,但实际上我得到的是所选用户:)我试图解决的问题是为sel用户获取所有(日期和时间)对象中的所有数据。感谢使用break的提示。如果键真的是唯一的,date&time
应该是单个对象,而不是每个属性都有一个属性的对象数组。然后,for(datesAndTimesArray中的var someKey){
就可以了。再次感谢。您和Felix已经证实了我对如何格式化数据的怀疑(因此“JSON新手提问”,并且已经格式化了很多种方式)。另外,我也很欣赏我的if声明中的提示;我对此也有点怀疑,但它被重新点燃了,因为它并没有阻止我获取数据;)p.s.使用if(usersArray[user].userName!=selUser){alert(“user not found”);}正如你上面所说的,我得到的所有选择都是错误的,这就是我所说的会发生的,这就是为什么你不应该做那个测试。如果你想知道是否找不到用户,请在循环结束时检查是否设置了datesAndTimesArray
。