如何以JSON响应的形式访问嵌套值作为数组

时间:2018-04-06 13:02:07

标签: javascript arrays json ecmascript-6 response

使用const token = response.json().token;我可以获得以下JSON:

{
    "token": "*********",
    "roles": [
        {
            "id": 4,
            "name": "User",
            "pivot": {
                "user_id": 1,
                "role_id": 4
            }
        }
    ]
}

我希望能够以角色的形式访问角色中的名称。

1 个答案:

答案 0 :(得分:1)

如果您只想访问角色数组,假设您使用的是传统的响应对象,则可以像其他用户所说的那样访问它:

var roles = response.json().roles

当我重读问题和评论时,我认为用户想要像列表一样访问角色中的名称。假设这样,map函数可以很好地完成这个任务:

// Assuming we store response in "data"
var data = response.json();
var names = data.roles.map(function(role){return role.name});
console.log(names);
// Then "names" will look like ["User",...]

简而言之,map将遍历它所调用的数组并对其运行提供的函数,第一个参数是它在数组中看到的当前值。此功能可以如上所述定义,或者如果逻辑复杂或重复使用,则预定义并传递。

这是Map及其兄弟Reduce的常用用法。两者通常用于将复杂的可变长度数据提取到更简单的形式。

地图记录: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

更新:看来原来的问题是关于ES6的问题,所以这里是"正确的"带有正确声明和箭头功能的ES6版本:

// Assuming we store response in "data"
const data = response.json();
const names = data.roles.map(role => role.name);
console.log(names);
// Then "names" will look like ["User",...]