我有一个最初是这样的功能,并且可以正常工作:
productGroupPages(): PDF.Page[] {
const descriptions = {};
this.areas.forEach(area => descriptions[area.id] = area.description);
return this.json.engagementAreas.map(area => {
return this.productGroupPage(area, descriptions[area.id]);
});
}
基本上所有内容都没有包装在其中。
我不得不更改函数,因为我想对每个函数进行一次处理,然后使用if语句,这样我只会返回实际上包含某个值的值,结果是我的return语句为时过早,由于for循环,我无法将其移至末尾,而且我还在努力寻找解决方法,
此新功能:
productGroupPages(): PDF.Page[] {
const descriptions = {};
let pages = {};
console.log('this .json' + JSON.stringify(this.json))
this.json.engagementAreas.forEach(area => {
descriptions[area.id] = area.description
if (area.engagementTypes.length !== 0) {
return this.json.engagementAreas.map(area => {
return this.productGroupPage(area, descriptions[area.id]);
});
}
})
}
我尝试创建变量,数组或对象,并将其等于返回值,然后在范围的末尾返回该值,但这让我说返回类型错误。
任何帮助将不胜感激。
答案 0 :(得分:1)
我认为您使用forEach
和map
分隔的初始代码非常干净!
新代码的问题是,在return
中使用.forEach()
在javascript中没有意义;)每当您从.forEach()
返回时,javascript都会忽略结果:>
let result = [1,2,3].forEach(x => {
return x * 2;
});
result // undefined
我认为您只想返回一些area
-s,您可以使用array.filter()
来完成,如下所示:
productGroupPages(): PDF.Page[] {
const descriptions = {};
this.areas.forEach(area => descriptions[area.id] = area.description);
return this.json.engagementAreas
.filter(area => area.engagementTypes.length !== 0)
.map(area => {
return this.productGroupPage(area, descriptions[area.id]);
});
}
我希望这实际上是您想要做的,如果是这样,我希望它能起作用:)