![](/img/trans.png)
[英]Expected to return a value at the end of arrow function: array-callback-return
[英]Expected to return a value at the end of arrow function array-callback-return on filter function
我正在使用React,我当前收到错误“预期在箭头函数array-callback-return结束时返回一个值”。 我搜索了其他问题,但似乎找不到匹配min的(除非我完全失明)。 我有以下代码。
const self = this; const relevantCompanyMeasures = this.props.companyMeasures .filter(companyMeasure => { for(const measure of self.state.measures) { if(measure.id === companyMeasure.measure_type_id) return true; else return false; } });
代码循环遍历两个对象数组,寻找两者之间的匹配。 如果我只为匹配返回true,我会理解错误。 但是,如果没有匹配,我会返回false。 结果,我很难看到如何在箭头函数结束时没有返回值的情况下结束。
这是因为return
只退出for
循环,而不是Array.prototype.filter()
的整个回调。 相反,使用循环来检查的companyMeasure.measure_type_id
中存在self.state.measures
,你可以简单地做一个阵图 ,它返回所有的ID,然后核对该返回数组,如果存在ID使用Array.prototype.includes
:
const self = this;
const relevantCompanyMeasures = this.props.companyMeasures
.filter(companyMeasure => {
return self.state.measures.map(m => m.id).includes(companyMeasure.measure_type_id);
});
更好的是:
this
从封闭范围内得以保留,所以你甚至不需要来代理this
在所有 .filter()
回调之外创建数组映射以减少开销 .filter()
回调是一个单行,我们可以摆脱大括号并利用箭头函数中的隐式返回 以下是最终代码的外观:
const ids = this.state.measures.map(m => m.id);
const relevantCompanyMeasures = this.props.companyMeasures
.filter(companyMeasure => id.includes(companyMeasure.measure_type_id));
或者:
measure
measure
要么:
measure
measure
摆脱else
并将return false
移动到循环之后 ,因此只有在到达循环结束时才会运行而不会找到匹配项。
const self = this; const relevantCompanyMeasures = this.props.companyMeasures .filter(companyMeasure => { return self.state.measures.map(meas => meas.id).indexOf(companyMeasure.measure_type_id)!=-1 } );
尝试这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.