首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JavaScript .forEach获取迭代JSON对象和JSON数组

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

Stack Overflow用户
提问于 2017-02-19 23:27:21
回答 2查看 4.1K关注 0票数 0

我有以下JSON对象:

代码语言:javascript
复制
var json = {"tsn": {
    "settings": 
        {"app_name": "TSN",  "version": "1.0"}, 
    "occurrences": 
        ["Party", "Music"]
    }
};

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

代码语言:javascript
复制
json.tsn.forEach(function(item){
    console.log(item.settings.app_name);
    console.log(item.occurrences);
});

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-19 23:30:51

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

事实上,你不需要对你正在做的事情进行迭代。只需执行以下操作:

代码语言:javascript
复制
var item = json.tsn;
console.log(item.settings.app_name);
console.log(item.occurrences);

或者,您可以使用Object.keys来获取键数组,然后您可以像这样继续:

代码语言:javascript
复制
Object.keys(json.tsn).forEach(function(key){
    var item = json.tsn[key];
    console.log(item);
});

或者甚至使用Object.entries来获取键/值对:

代码语言:javascript
复制
Object.entries(json.tsn).forEach(function([key, item]){
    console.log(key, item);
});
票数 2
EN

Stack Overflow用户

发布于 2017-02-19 23:43:34

forEach方法不是the Object specification的组成部分。

若要循环访问对象的可枚举属性,应使用for...in语句。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42329050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档