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

使用Array.find仅返回对应日期的首个匹配数据,如何获取全部符合条件的数组条目

问题根因

  • JavaScript 内置的 Array.find() 方法的原生设计就是仅返回数组中第一个满足匹配条件的元素,若需要获取数组中所有符合条件的条目,需替换为 Array.filter() 方法,该方法会返回包含所有匹配项的新数组。
  • 现有代码的另一个问题是用于收集结果的 filteredData6 定义在 map 循环内部,每次遍历不同日期分组时都会被重置,且状态更新逻辑放在循环内会触发多次不必要的重渲染。

修正后代码

// 结果收集变量提到循环外部,避免被重置
let filteredData6 = [];
let allNightBefore = [];

data.map((arr) => {
  // filter返回当前日期分组下所有符合medicationTime要求的条目
  const currentNightBeforeList = arr.filter(o => o.medicationTime === "night before food");
  // 收集所有匹配的nightbefore条目用于打印
  allNightBefore.push(...currentNightBeforeList);
  
  // 遍历所有匹配条目,汇总药品数据
  currentNightBeforeList.forEach(nightbeforeItem => {
    filteredData6.push(...nightbeforeItem.Medicines);
  })
})

// 打印所有符合条件的nightbefore条目
console.log(allNightBefore);
// 统一更新状态,避免频繁重渲染
setmedicine6(filteredData6);

补充说明

如果业务逻辑确认每个日期分组arr内最多只会有一条匹配medicationTime的记录,也可以保留find逻辑,只需要额外声明数组收集每个分组的find结果即可,无需替换为filter。

内容的提问来源于stack exchange,提问作者vivek kn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:45:05