我正在编写一个ReactJS应用,我在函数filterSelected
中有一个for循环,该函数遍历区域名称的数组(例如["Thailand", "Malaysia"]
),并应返回其对应区域的数组代码(例如["TH", "MY"]
)。
在我的mapRegionToCode
函数中,它通过对象的对象进行映射,并且控制台日志正确打印了相应的区域代码,但是该函数返回了undefined
。
任何想法为什么会受到赞赏!
mapRegionToCode(region) { // region = "Thailand"
_.forEach(_.values(this.props.regionsCodes), regionCode => {
if(regionCode.country.countryName === region) {
console.log(regionCode.country.countryCode); //"TH"
return regionCode.country.countryCode;
}
});
}
filterSelected(filters) {
...
for(let i = 0; i < regionsArray.length; i++){
const regionCode = this.mapRegionToCode(regionName);
console.log(regionCode); //undefined
regionNames.push(regionCode);
}
...
}
答案 0 :(得分:2)
更新
我读了你想做错什么。您需要执行以下操作:
country.countryName === region
country.countryCode
使用lodash,您可以执行以下操作:
mapRegionToCode(region) {
return _.find(_.values(this.props.regionsCodes),regionCode => regionCode.country.countryName === region).country.countryCode
}
原始答案
您忘记在return
函数中添加mapRegionToCode
:
mapRegionToCode(region) { // region = "Thailand"
return _.map(_.values(this.props.regionsCodes), regionCode => {
if(regionCode.country.countryName === region) {
console.log(regionCode.country.countryCode); //"TH"
return regionCode.country.countryCode;
}
});
}
(此外,您需要使用_.map
而不是_.forEach
)