Javascript 如何从数组对象中的嵌套数组中获取数据
我有一个像这样的对象数组Javascript 如何从数组对象中的嵌套数组中获取数据,javascript,json,Javascript,Json,我有一个像这样的对象数组 array = { "microservices": [ { "id": 1, "permissions": [ { "id": 65, "name": "Default permission" }, {
array = {
"microservices": [
{
"id": 1,
"permissions": [
{
"id": 65,
"name": "Default permission"
},
{
"id": 64,
"name": "Super user Access"
}
]
},
{
"id": 2,
"permissions": []
},
{
"id": 3,
"permissions": [
{
"id": 18,
"name": "Script: Update"
},
{
"id": 15,
"name": "Application: Delete"
},
{
"id": 9,
"name": "Workspace: Create"
}
]
}
]
}
const whatYouNeed = array.microservices.reduce((sum, item) => {
sum.push(item.permissions);
return sum;
}, []);
从microservices数组中,我只想获得一个新变量的“权限”数组和存储,我搜索了它,但没有得到任何相关的解决方案,提前感谢您可以使用
map
操作符单独获取该特定属性。请检查下面的JS示例
const数组={
“微服务”:[{
“id”:1,
“权限”:[{
“id”:65,
“名称”:“默认权限”
},
{
“id”:64,
“名称”:“超级用户访问”
}
]
},
{
“id”:2,
“权限”:[]
},
{
“id”:3,
“权限”:[{
“id”:18,
“名称”:“脚本:更新”
},
{
“id”:15,
“名称”:“应用程序:删除”
},
{
“id”:9,
“名称”:“工作区:创建”
}
]
}
]
}
常量输出=[]
array.microservices.map(函数(x){
output.push(…x.permissions);
})
控制台日志(输出)代码>这不是一个特定的角度或打字问题,但您可以这样做
array = {
"microservices": [
{
"id": 1,
"permissions": [
{
"id": 65,
"name": "Default permission"
},
{
"id": 64,
"name": "Super user Access"
}
]
},
{
"id": 2,
"permissions": []
},
{
"id": 3,
"permissions": [
{
"id": 18,
"name": "Script: Update"
},
{
"id": 15,
"name": "Application: Delete"
},
{
"id": 9,
"name": "Workspace: Create"
}
]
}
]
}
const whatYouNeed = array.microservices.reduce((sum, item) => {
sum.push(item.permissions);
return sum;
}, []);
或者,如果您希望它是单个级别:
const whatYouNeed = array.microservices.reduce((sum, item) => {
sum = sum.concat(item.permissions);
return sum;
}, []);
因为您需要一个包含所有权限的单一数组,所以这将是最干净的方法。阅读平面地图
使用多边形填充以支持浏览器。在上面的链接中提供。您可以使用ES6map
const permissionsArrays = array.microservices.map(microservice => microservice.permissions)
假设您接收的是json数据:
{
"microservices": [
{
"id": 1,
"permissions": [
{
"id": 65,
"name": "Default permission"
},
{
"id": 64,
"name": "Super user Access"
}
]
},
{
"id": 2,
"permissions": []
},
{
"id": 3,
"permissions": [
{
"id": 18,
"name": "Script: Update"
},
{
"id": 15,
"name": "Application: Delete"
},
{
"id": 9,
"name": "Workspace: Create"
}
]
}
]
}
只需创建一个界面,即可使用intellisense:
export interface Microservice {
microservices?: (MicroservicesEntity)[] | null;
}
export interface MicroservicesEntity {
id: number;
permissions?: (PermissionsEntity | null)[] | null;
}
export interface PermissionsEntity {
id: number;
name: string;
}
通过这种方式,您可以获得intellisense的帮助,因此通过引用json数据的接口来访问数据:
data: Microservice;
然后使用map获得权限数组首先,您有一个包含数组而不是实际数组的对象。但我们暂时忽略这一点
array = {
"microservices": [
{
"id": 1,
"permissions": [
{
"id": 65,
"name": "Default permission"
},
{
"id": 64,
"name": "Super user Access"
}
]
},
{
"id": 2,
"permissions": []
},
{
"id": 3,
"permissions": [
{
"id": 18,
"name": "Script: Update"
},
{
"id": 15,
"name": "Application: Delete"
},
{
"id": 9,
"name": "Workspace: Create"
}
]
}
]
}
const permissions = array.microservices.map(item => {
return item.permissions;
});
只需如下迭代json对象即可。新数组“权限”将返回您的数据
getPermissions(){
this.array.microservices.forEach(element => {
element.permissions.forEach(ele => {
this.permissions.push(ele);
});
});
console.log(this.permissions);
}
您还可以预先使用.map操作符..您的解决方案可以工作,但我只需要一个数组中的数据,如[{“id”:65,“名称”:“默认权限”},{“id”:64,“名称”:“超级用户访问”},{“id”:18,“名称”:“脚本:更新”},{“id”:15,“名称”:“应用程序:删除”},{“id”:9,“名称”:“工作区:创建”}]@RazaEllahi您能检查我更新的答案是否正确吗?您的解决方案有效,但我只需要一个数组中的数据,如[{“id”:65,“名称”:“默认权限”},{“id”:64,“名称”:“超级用户访问”},{“id”:18,“名称”:”脚本:更新“},{“id”:15,“名称”:“应用程序:删除”},{“id”:9,“名称”:“工作区:创建”}]