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

JavaScript日期过滤问题:如何排除本周栈中的今日与昨日数据

日期分组过滤:排除今日、昨日的本周数据解决方案

你的问题核心是thisWeek分组未排除已独立划分的今日、昨日数据,只需在该分组的过滤逻辑中添加排除条件即可,以下是修改后的完整代码:

const filterByDate = (data) => {
    const tempStacks = {} as any;
    const date = new Date();
    // 统一将时间设为0点,避免时分秒干扰日期判断
    date.setHours(0, 0, 0, 0);
    const yesterday = new Date(date);
    yesterday.setDate(date.getDate() - 1);

    const getWeek = (d: Date) => {
        const dt = new Date(d.getFullYear(), 0, 1);
        return Math.ceil((((d.getTime() - dt.getTime()) / 86400000) + dt.getDay()) / 7);
    };
    const thisWeek = getWeek(date);

    // 筛选今日数据
    tempStacks.today = data.filter(obj => {
        const objDate = new Date(obj.date);
        objDate.setHours(0, 0, 0, 0);
        return objDate.getTime() === date.getTime();
    });

    // 筛选昨日数据
    tempStacks.yesterday = data.filter(obj => {
        const objDate = new Date(obj.date);
        objDate.setHours(0, 0, 0, 0);
        return objDate.getTime() === yesterday.getTime();
    });

    // 筛选本周数据(排除今日、昨日)
    tempStacks.thisWeek = data.filter(obj => {
        const objDate = new Date(obj.date);
        objDate.setHours(0, 0, 0, 0);
        const isThisWeek = getWeek(objDate) === thisWeek;
        const isToday = objDate.getTime() === date.getTime();
        const isYesterday = objDate.getTime() === yesterday.getTime();
        return isThisWeek && !isToday && !isYesterday;
    });

    // 筛选过去两周数据(本周之前的两周)
    tempStacks.lastTwoWeeks = data.filter(obj => {
        const objDate = new Date(obj.date);
        objDate.setHours(0, 0, 0, 0);
        const objWeek = getWeek(objDate);
        return objWeek === thisWeek - 1 || objWeek === thisWeek - 2;
    });

    return tempStacks;
}

关键改动说明

  • 统一日期基准:将所有参与判断的日期时分秒设为0,避免因数据中包含具体时间导致的匹配错误
  • 新增排除逻辑:在thisWeek的过滤条件中加入!isToday && !isYesterday,确保今日、昨日数据不会重复出现在本周分组
  • 类型规范:给getWeek函数的参数添加Date类型标注,符合TypeScript语法要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:05:21