javascript - 从 JSON 数组中的嵌套对象获取所有键及其值(不包含 jQuery)

标签 javascript json

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

那么你只需要做for (datesAndTimesArray)

关于javascript - 从 JSON 数组中的嵌套对象获取所有键及其值(不包含 jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25514359/

相关文章:

javascript - $http.get 在执行 $http.post 后返回旧查询,我做错了什么?

javascript - 将字符串转换为日期对象时获取不正确的时间

javascript - 嵌套for循环同时更新3个变量

javascript - Highcharts 工具提示系列名称前面的奇怪字符

json - 使用 dockerspect 中的 jq bash 命令获取网络 IP 地址

json - 阻止用户对 mongodb 进行 Json 查询

javascript - 将 ajax json 输入发送到附加的 onclick js 函数

javascript - Javascript 中的字符串和字符数组有什么区别?

python - 在字典中添加字典,使其在Python中看起来更像JSON

java - 从 android 连接到 MySQL 数据库。没有迹象表明它正在工作/不工作......?