gpt4 book ai didi

javascript - 重新循环嵌套对象时保留原始键

转载 作者:行者123 更新时间:2023-12-01 01:13:26 25 4
gpt4 key购买 nike

我有一个带有子对象和数组的嵌套对象。像这样的事情:

const documents = {
invoice: {
documentID: '_e4564',
displayName: '2019-02-03',
url: 'https://www.urltoinvoice.com'
},

conditions: {
documentID: '_e9365',
displayName: 'Conditions company x',
url: 'https://www.urltoconditions.com'
},

reminders: [
{
documentID: '_e4364',
displayName: 'First reminder',
url: 'https://www.urltofirstreminder.com'
},
{
documentID: '_e0254',
displayName: 'Second reminder',
url: 'https://www.urltosecondreminder.com'
},
]
}

我正在尝试创建一个新的对象数组以在选择框中使用。子对象需要相同的属性,但需要根据文档类型更新显示名称。例如,提醒:第一次提醒

目前,这是我的代码:

const newArray = [];
this.addDocumentToArray(documents, newArray);

和 addDocumentToArray 函数:

addDocumentToArray = (documents, arr) => {
Object.entries(documents).forEach(([key, val]) => {
if (Array.isArray(val)) {
this.addDocumentToArray(val, arr);
} else {
arr.push({ documentID: val.documentID, displayName: `${key}: ${val.displayName}` });
}
});
}

此时的输出是一个如下所示的数组:

0: {documentID: "_e4564", displayName: "invoice: 2019-02-03"}
1: {documentID: "_e9365", displayName: "conditions: Conditions company x"}
2: {documentID: "_e4364", displayName: "0: First reminder"}
3: {documentID: "_e0254", displayName: "1: Second reminder"}

几乎没问题,但提醒的关键是01。我如何获得提醒(或多个提醒)作为 key ?

最佳答案

您可以向函数 labelKey 添加第三个可选参数。仅当您的值是数组时才传递该参数,并且它将使用该值作为其他部分的键

addDocumentToArray = (documents, arr, labelKey) => {
Object.entries(documents).forEach(([key, val]) => {
if (Array.isArray(val)) {
this.addDocumentToArray(val, arr, key);
} else {
arr.push({ documentID: val.documentID, displayName: `${labelKey || key}: ${val.displayName}` });
}
});
}

关于javascript - 重新循环嵌套对象时保留原始键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54974417/

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