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

JavaScript基于时间范围过滤JSON 筛选1-2周区间内的记录

问题原因

  • 拆分delivery_time_frame的分隔符错误:原字段用空格-空格分隔起止日期,用'-'拆分只会把日期本身的年/月/日拆碎,无法获取完整的起止日期字符串
  • dateConverter传参错误:两次都传入了拆分后的第一个值,计算得到的时间差永远为0
  • 缺少时间区间判断逻辑:未对计算得到的天数做7-14天的范围校验

修正代码

二次过滤逻辑调整

const next_level = above_10.filter((d) => {
  // 用正确的分隔符拆分起止日期,同时去除两端空格避免格式异常
  const [startStr, endStr] = d.delivery_time_frame.split(' - ').map(item => item.trim())
  const diffDays = dateConverter(startStr, endStr)
  // 1周=7天,2周=14天,可根据实际需求调整为开/闭区间
  return diffDays >= 7 && diffDays <= 14
})

可选优化:dateConverter函数容错补充

如果担心传入非法日期格式,可以新增有效性判断:

const dateConverter = (startDate, timeEnd) => {
    const newStartDate = new Date(startDate);
    const newEndDate = new Date(timeEnd);
    // 新增非法日期校验,避免计算异常
    if (isNaN(newStartDate.getTime()) || isNaN(newEndDate.getTime())) return 0
    const one_day = 1000*60*60*24;
    let result;
    result = Math.ceil((newEndDate.getTime() - newStartDate.getTime()) / (one_day));
    console.log('date Converter result', result);
    if (result < 0) { return 0; }
    return result;
}

示例数据测试说明

你提供的3条测试数据中:

  1. 第一条配送区间为2021-10-25到2021-11-14,间隔20天超出2周范围
  2. 第二条配送区间为2021-10-18到2021-10-24,间隔6天不足1周
  3. 第三条delivery_time_frame长度不足10,第一步就被过滤
    所以示例数据筛选后结果为空,可替换为符合7-14天区间的测试数据验证逻辑正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:09