[英]Reduce level of nested object array in Typescript/JS
我正在学习 TypeScript 和 Angular 并且我正在努力解决一个问题。 说,我有一个Application
对象数组。 每个Application
object 都有这种嵌套结构:
应用
|
----[文档类型]
---------|
- - - - - - - [文档]
------------------|
------------------------元数据
(每个Application
都有一个Document Type
数组。每个Document Type
都有一个Document
数组。每个Document
里面都有一个Metadata
)
例子:
[
{
"name": "Application 1",
"parent_type": "root",
"children": [
{
"name": "Operations Manual",
"parent": "Application 1",
"parent_type": "application",
"count": 2,
"children": [
{
"name": "App1-OpManual-1",
"metadata": {
"actualDocName": "operations1-app1",
"currentStatus": "for review",
"lastModifiedBy": "user 1",
"size": 56,
"fileExtension": "docx"
}
},
{
"name": "App1-OpManual-2",
"metadata": {
"actualDocName": "operations2-app1",
"currentStatus": "for review",
"lastModifiedBy": "user 2",
"size": 56,
"fileExtension": "pdf"
}
}
]
}
]
}
]
我正在尝试将此数组减少到这个(基本上,只保留嵌套到第 2 级并丢弃其余的):
应用
|
----[文档类型]
..所以,JSON 变成这样:
[
{
"name": "Application 1",
"parent_type": "root",
"children": [
{
"name": "Operations Manual",
"parent": "Application 1",
"parent_type": "application",
"count": 2
}
]
}
]
我一直在尝试使用教程中的多个示例,但无法获得正确的 JS 来执行此操作。 有人可以帮忙吗?
您可以使用.map()
和解构从数组中最外层的对象中获取所需的属性和值,然后再次使用.map()
和解构从最内层的 object 中获取所需的属性map 阵列中的每个应用程序 object 到新创建的自身缩小版本:
const arr = [{name:"Application 1",parent_type:"root",children:[{name:"Operations Manual",parent:"Application 1",parent_type:"application",count:2,children:[{name:"App1-OpManual-1",metadata:{actualDocName:"operations1-app1",currentStatus:"for review",lastModifiedBy:"user 1",size:56,fileExtension:"docx"}},{name:"App1-OpManual-2",metadata:{actualDocName:"operations2-app1",currentStatus:"for review",lastModifiedBy:"user 2",size:56,fileExtension:"pdf"}}]}]}]; const res = arr.map(({children, ...r}) => ( {...r, children: children.map(({children, ...keep}) => ({...keep})) } )); console.log(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.