Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取所有钥匙&;它们的值来自JSON数组中的嵌套对象(w/out jQuery)_Javascript_Json - Fatal编程技术网

Javascript 获取所有钥匙&;它们的值来自JSON数组中的嵌套对象(w/out jQuery)

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" }

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

因为
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