如何使用JavaScript .forEach获取迭代JSON对象和JSON数组

时间:2017-02-19 15:27:21

标签: javascript json

我有以下JSON对象:

var json = {"tsn": {
    "settings": 
        {"app_name": "TSN",  "version": "1.0"}, 
    "occurrences": 
        ["Party", "Music"]
    }
};

我真的不明白为什么我不能像这样访问它的值:

json.tsn.forEach(function(item){
    console.log(item.settings.app_name);
    console.log(item.occurrences);
});

我得到json.tsn.forEach is not a function

2 个答案:

答案 0 :(得分:1)

forEach是一种可用于数组的方法;对于非数组对象,它不存在。

事实上,你不需要为你正在做的事情进行迭代。就这样做:

var item = json.tsn;
console.log(item.settings.app_name);
console.log(item.occurrences);

或者,您可以使用Object.keys获取一系列键,然后您可以继续这样:

Object.keys(json.tsn).forEach(function(key){
    var item = json.tsn[key];
    console.log(item);
});

答案 1 :(得分:1)

forEach方法不属于the Object specification

要遍历对象的可枚举属性,您应该使用for...in语句。

var json = {
    "tsn": {
        "settings": {
            "app_name": "TSN",
            "version": "1.0"
        },
        "occurrences": ["Party", "Music"]
    }
};

for (var prop in json) {
    console.log(json[prop].settings.app_name);
    console.log(json[prop].occurrences);
}

请参阅for...in statement reference