gpt4 book ai didi

javascript - 将具有子数组的对象数组映射并减少到具有父 id 的子数组

转载 作者:行者123 更新时间:2023-11-30 07:12:58 24 4
gpt4 key购买 nike

我正在尝试获取像这样的对象数组

[
{
"id": "uniqueParentId1",
"children": [
{
"childProp1": "test1",
"childProp2": "test3"
}
]
},
{
"id": "uniqueParentId2",
"children": [
{
"childProp1": "somevals",
"childProp2": "other vals"
},
{
"childProp1": "somevals 1",
"childProp2": "other vals 1"
}
]
}
]

并返回所有子对象的组合数组,每个子对象都有一个附加值,即父对象的“id”。

上面的例子,结果。

[
{
"parentId": "uniqueParentId1",
"childProp1": "test1",
"childProp2": "test3"
},
{
"parentId": "uniqueParentId2",
"childProp1": "somevals",
"childProp2": "other vals"
}
{
"parentId": "uniqueParentId2",
"childProp1": "somevals 1",
"childProp2": "other vals 1"
}
]

我只是不确定如何处理这个问题。我熟悉扁平化和数组数组。但是我只能在不添加 parentId 的情况下将输出作为原始子项的数组

最佳答案

应该这样做:

var values = [{
"id": "uniqueParentId1",
"children": [{
"childProp1": "test1",
"childProp2": "test3"
}]
},
{
"id": "uniqueParentId2",
"children": [{
"childProp1": "somevals",
"childProp2": "other vals"
},
{
"childProp1": "somevals 1",
"childProp2": "other vals 1"
}
]
}
];

var result = values.map(value =>
value.children.map(child => ({ parentId: value.id, ...child }))
).flat();

console.log(result);

代码分解:

child => ({ parentId: value.id , ...child })

接受一个对象并返回一个新对象,该对象具有 parentId 属性和 child 中的所有属性。

输入:

{
"childProp1": "somevals",
"childProp2": "other vals"
}

输出:

{
"parentId": "uniqueParentId2"
"childProp1": "somevals",
"childProp2": "other vals"
}

下一个函数:

value =>
value.children.map(child => ({ parentId: value.id, ...child }))

获取一个名为value 的对象,将上面的函数应用于value.children 中的每个数组元素,并返回一个结果数组。

下一步:

values.map(.....)

将上述函数应用于 values 中的每个元素并返回结果数组。

此时,此 .map() 调用的结果是一个如下所示的数组,原始数组的每个元素都有一个元素:

[
[
{
"parentId": "uniqueParentId1",
"childProp1": "test1",
"childProp2": "test3"
}
],
[
{
"parentId": "uniqueParentId2",
"childProp1": "somevals",
"childProp2": "other vals"
},
{
"parentId": "uniqueParentId2",
"childProp1": "somevals 1",
"childProp2": "other vals 1"
}
]
]

所以我们做的最后一件事是用 .flat() 展平这个数组。

关于javascript - 将具有子数组的对象数组映射并减少到具有父 id 的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45740484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com