![](/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.