javascript - 重命名无限嵌套对象数组中的属性
问题描述
我有这个数组
[
{
id: "2b077c3c-9d3a-48ba-9217-f5d3d28c2dfc",
description: "Response #1",
user: { id: "3ae5967a-cdfa-4047-aff9-b0c95d2d4da4", name: "User" },
responses: [
{
id: "69442cb1-7de7-4f2d-9c8b-d6689fa1d007",
description: "Response #2",
media: "b414e44f-7371-4cef-b0d9-d240e55b0ed1.jpg",
user: { id: "3ae5967a-cdfa-4047-aff9-b0c95d2d4da4", name: "User" }
}
]
},
{
id: "d8271620-9937-4815-bd35-acad62d85f53",
description: "Response #3",
user: { id: "3ae5967a-cdfa-4047-aff9-b0c95d2d4da4", name: "User" },
responses: [
{
id: "05acce0a-8f7e-4ccd-9bbc-3337e4faa8ca",
description: "Response #4",
user: { id: "3ae5967a-cdfa-4047-aff9-b0c95d2d4da4", name: "User" }
}
]
}
]
我想将属性重命名为
[
{
id: "2b077c3c-9d3a-48ba-9217-f5d3d28c2dfc",
name: "User — Response #1",
children: [
{
id: "69442cb1-7de7-4f2d-9c8b-d6689fa1d007",
name: "User — Response #2"
}
]
},
{
id: "d8271620-9937-4815-bd35-acad62d85f53",
name: "User — Response #3",
children: [
{
id: "05acce0a-8f7e-4ccd-9bbc-3337e4faa8ca",
name: "User — Response #4",
}
]
}
]
我试图用地图和递归来解决这个问题
function mapArray(array) {
return array.map(({ id, description, user: { name }, responses }) => {
if (responses !== undefined) {
return mapArray(responses);
}
return {
id,
name: `${name} — ${description}`,
children: responses
};
});
}
但它的数组变成嵌套的,孩子是undefined
.
[
[
{
id: '69442cb1-7de7-4f2d-9c8b-d6689fa1d007',
name: 'User — Response #2',
children: undefined
}
],
[
{
id: '05acce0a-8f7e-4ccd-9bbc-3337e4faa8ca',
name: 'User — Response #4',
children: undefined
}
]
]
请注意,responses
深度不定。
我哪里搞砸了?谢谢
解决方案
你很亲密。if 条件内只有 1 行更改应该修复它。
function mapArray(array) {
return array.map(({ id, description, user: { name }, responses }) => {
if (responses !== undefined) {
responses = mapArray(responses);
}
return {
id,
name: `${name} — ${description}`,
children: responses
};
});
}
推荐阅读
- c# - 通用的
统一 C# - python-3.x - Pandas - 将分组列合并到另一个数据框
- python - 无法读取之前读取好的excel文件?
- python - 在正在读取的 csv 文件的“n”位置添加一行
- c# - Carga masiva de datos .txt con C# web a SQL Server
- javascript - 如何将相同的事件侦听器切换到两个不同的功能?
- android - 将数据从 SecondActivity 传输到 MainActivity
- java - 如何在第一行创建一个具有不同起始值的二维数组?
- c++ - 基类的构造函数a比派生类的构造函数有更多的参数
- php - 如何在 HTTP/1.1 中使用 PHP cURL