You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:15:48