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

OpenWeather API数据按日期分组并筛选符合风速要求日期的实现方法

解决方案

核心调整点是翻转了过滤和分组的执行顺序,改为先全量按日期分组,再过滤掉没有达标风速记录的分组,既能保留符合要求日期的全量时间戳,又能剔除全天无达标风速的日期。

调整后的实现代码如下:

const groupByDay = () => {
  // 全量按日期分组,不提前过滤风速不达标条目
  const allDayGroups = weatherList.reduce((entryMap, entry) => {
    const selector = unix(entry.dt).format("dddd MM/DD");
    return entryMap.set(selector, [...(entryMap.get(selector) || []), entry]);
  }, new Map());

  // 仅保留当日至少有1条风速达标记录的分组
  const validGroups = new Map();
  for (const [dateKey, entries] of allDayGroups) {
    const hasQualifiedWind = entries.some(item => item.wind.speed >= MIN_WIND_SPEED);
    if (hasQualifiedWind) {
      validGroups.set(dateKey, entries);
    }
  }
  return validGroups;
};

如果偏好精简写法,可以用以下逻辑完全一致的版本:

const groupByDay = () => 
  new Map(
    Array.from(
      weatherList.reduce((entryMap, entry) => {
        const selector = unix(entry.dt).format("dddd MM/DD");
        return entryMap.set(selector, [...(entryMap.get(selector) || []), entry]);
      }, new Map())
    ).filter(([_, entries]) => entries.some(e => e.wind.speed >= MIN_WIND_SPEED))
  );

内容的提问来源于stack exchange,提问作者Son Le

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:18:04