gpt4 book ai didi

javascript - 如何将 JS 对象列表列表合并到一个 JS 对象列表

转载 作者:行者123 更新时间:2023-12-02 20:57:12 25 4
gpt4 key购买 nike

我有一个包含 4 个字段的 JSON,其中第 4 个字段是 js 对象列表

[
{
"srNumber": 1,
"Name": "prod name",
"includeInAutoSupplies": true,
"childObjectList": [
{
"cValue": "cValue Name 1",
"Name": "testName1",
},
{
"cValue": "cValue Name 2",
"Name": "testName2",
},
{
"cValue": "cValue Name 3",
"Name": "testName3",
},
]
}
]

这里很难用语言解释,但我需要将上面的数组转换为如下所示的数组,其中 testName1, 2, 3 是子对象字段的 Name 值,cValue Name1, 2, 3 是子对象数组中 cValue 的值。

[
{
"srNumber": 1,
"Name": "prod name",
"includeInAutoSupplies": true,
"testName1": "cValue Name 1"
"testName2": "cValue Name 2"
"testName3": "cValue Name 3"
}
]

我无法更改 JSON 结构,因为这就是我获取它的方式,我需要将其作为一个对象数组而不是其中的数组属性数组,以便我可以进一步使用它导出到 .csv 文件。

最佳答案

函数式方法:

const transform = list => list.map(
entry => Object.fromEntries([
...Object.entries(entry).filter(([k]) => k !== 'childObjectList'),
...entry.childObjectList.map(({ Name, cValue }) => [Name, cValue])
])
)

说明:Object.entries{ k1: v1, k2: v2 }Object.fromEntries 返回一个数组 [[k1, v1], [k2, v2]]则相反。这样,我们将列表中的所有条目映射到其转换后的自身,其中包含除 childObjectList 之外的所有现有属性的组合以及转换为单独属性的 childObjectList 的内容。

<小时/>

命令式方法:

function transform (list) {
for (const entry of list) {
for (const { Name, cValue } of entry.childObjectList) {
entry[Name] = cValue
}
delete entry.childObjectList
}
return list
}

请注意,这个会改变 list 及其子项。如果这是不需要的,您可以这样更改:

function transform (list) {
const newList = []
for (const { ...entry } of list) {
for (const { Name, cValue } of entry.childObjectList) {
entry[Name] = cValue
}
delete entry.childObjectList
newList.push(entry)
}
return newList
}

说明:我们只是循环遍历列表中的元素并修改它们(或创建修改后的副本),从而删除 childObjectList 属性,并将每个子元素添加为单独的属性。

<小时/>

在所有三种情况下,如果您随后调用 transform(theArray),您就会得到所需的结果。

关于javascript - 如何将 JS 对象列表列表合并到一个 JS 对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61444326/

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