[英]How to get data from nested arrays in array object
我有这样的对象数组
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"
}
]
}
]
}
从微服务数组中,我只想获取“权限”数组并将其存储到一个新变量中,所以我进行了搜索,但没有任何相关的解决方案,在此先感谢
您可以使用map
运算符并单独获取该特定属性。 请检查以下JS示例。
const 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 output = [] array.microservices.map(function(x) { output.push(...x.permissions); }) console.log(output);
只需简单地如下迭代json对象。 新数组“权限”将返回您的数据。
getPermissions(){
this.array.microservices.forEach(element => {
element.permissions.forEach(ele => {
this.permissions.push(ele);
});
});
console.log(this.permissions);
}
预先也可以使用.map运算符。
这不是特定的Angular或Typescript问题,但是您可以这样操作
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;
}, []);
您可以使用ES6 map
。
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"
}
]
}
]
}
只需创建一个接口,即可使用智能感知:
export interface Microservice {
microservices?: (MicroservicesEntity)[] | null;
}
export interface MicroservicesEntity {
id: number;
permissions?: (PermissionsEntity | null)[] | null;
}
export interface PermissionsEntity {
id: number;
name: string;
}
通过这种方式,您可以获得智能感知的帮助,因此可以通过引用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;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.