React Native中FlatList调用map条件映射返回匹配数据问题
问题根因
你的代码有两个核心错误,导致返回值不符合预期:
- 外层
getDay函数没有写返回语句:你只在map的回调函数内部写了return,map执行生成的新数组没有被外层函数返回,所以调用getDay时实际拿到的是undefined - 误用了
map方法做单值匹配:map会遍历完数组所有元素,返回和原数组长度相等的新数组。哪怕遍历中途匹配到了对应日期,后续遍历其他元素时还是会走else分支返回"Rest",最终得到的是类似["Upper", "Rest"]的数组,不是你需要的单个字符串。
修复方案
用数组的find方法做匹配是最简洁的实现,find会返回第一个符合条件的数组元素,找不到就返回undefined,完全匹配你的需求:
const getDay = (it) => { const matched = splitByDay.find(item => item.Day === it) return matched ? matched.data : "Rest" }
如果你更习惯循环写法,也可以用普通循环提前终止返回,不要用map:
const getDay = (it) => { for (const item of splitByDay) { if (item.Day === it) { return item.data } } return "Rest" }
注意:匹配时是严格相等判断,请确保传入的日期参数
it和数组内Day字段的拼写、大小写完全一致,比如传"SUN"、"sun"或者"Sun"这类缩写/大小写不一致的值,都会匹配失败返回"Rest"。
内容的提问来源于stack exchange,提问作者branman3542
相关产品推荐
相关产品推荐

