我需要一个返回对象数组的函数,但是目前,我得到一个空数组作为返回值。
我有以下代码:
componentWillMount() {
const data = {
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'
},
]
}
this.setState({
documents: this.getDocuments(data)
})
}
getDocuments = documents => {
const arr = [];
function addDocument(documents, labelKey) {
Object.entries(documents).forEach(([key, val]) => {
if (Array.isArray(val)) {
addDocument(val, key);
} else {
arr.push({ documentID: val.documentID, displayName: `${labelKey || key}: ${val.displayName}` });
}
});
};
return arr;
}
此时,代码未执行addDocument
函数。
有人可以告诉我我在做什么错吗?
答案 0 :(得分:1)
在return语句之前添加的addDocument的调用:
getDocuments = documents => {
const arr = [];
function addDocument(documents, labelKey) {
Object.entries(documents).forEach(([key, val]) => {
if (Array.isArray(val)) {
addDocument(val, key);
} else {
arr.push({ documentID: val.documentID, displayName: `${labelKey || key}: ${val.displayName}` });
}
});
};
addDocument(documents) ;
return arr;
}
由于中的要求,仅使用documents参数调用
addDocument Keep original key when re-looping through nested object