Javascript 当返回在if语句中时,如何为函数指定返回值
我有一个功能,最初是这样的,并且工作:Javascript 当返回在if语句中时,如何为函数指定返回值,javascript,arrays,object,Javascript,Arrays,Object,我有一个功能,最初是这样的,并且工作: productGroupPages(): PDF.Page[] { const descriptions = {}; this.areas.forEach(area => descriptions[area.id] = area.description); return this.json.engagementAreas.map(area => { return this.productGroupPage
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]);
});
}
基本上,并不是所有的东西都包含在for-each中
我不得不改变函数,因为我想通过一个for-each,然后使用if语句,这样我只返回实际包含某个值的值,结果是我的返回语句太早了,因为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]);
});
}
})
}
我尝试创建一个变量、数组或对象,并将其与返回值相等,然后在接近作用域结尾处返回,但这不会让我知道返回类型是错误的
任何帮助都将不胜感激。我认为您最初的代码,用
forEach
和map
分隔,非常干净
新代码的问题在于,在.forEach()中使用return
在javascript中没有意义无论何时从.forEach()
返回,javascript都会忽略结果:
let result = [1,2,3].forEach(x => {
return x * 2;
});
result // undefined
我想您只想返回一些区域
-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]);
});
}
我希望这就是你想要做的,如果是这样的话,我希望它能起作用:)你能给出一个具体的示例,说明示例输入和它的预期输出吗?在.forEach()
中有一个返回值,但这没有任何作用,就像.forEach()
忽略返回的值,本身不返回任何内容。您似乎希望执行.filter()
后接.map()
而不是.forEach()
注意:数组。forEach
不返回anything@Rajesh现在我看了一下修改后的代码,函数本身也没有。它以前返回.map()
的结果,现在它只执行.forEach()
,甚至没有return
语句。我建议您执行this.json.engagementreas.forEach(area=>{if(area.engagementTypes.length!==0){descriptions[area.id]=area.description})
然后循环描述嘿,我喜欢json.engagements上的返回方式,然后操作数据。我想知道有多少页是由这个创建的,但.map创建了一个this.productGroupPage结果数组。