ale*_*hel 3 javascript filter reactjs arrow-functions
我正在 React 中工作,目前收到错误“预期在箭头函数数组回调返回的末尾返回一个值”。我搜索了其他问题,但似乎找不到与 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;
}
});Run Code Online (Sandbox Code Playgroud)
该代码循环遍历两个对象数组,寻找两者之间的匹配项。如果我只为匹配返回 true,我就会理解这个错误。但是,如果没有匹配项,我会返回 false。因此,我很难想象最终会出现箭头函数末尾没有返回值的情况。
这是因为return仅退出for循环,而不是 中的整个回调Array.prototype.filter()。您可以简单地执行一个数组map,它返回所有 ID,然后使用以下命令检查该返回数组是否存在 ID,而不是使用 for 循环来检查是否存在于companyMeasure.measure_type_id中:self.state.measuresArray.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);
});
Run Code Online (Sandbox Code Playgroud)
更好的是:
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));
Run Code Online (Sandbox Code Playgroud)