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

JavaScript使用filter()按当前时间筛选嵌套数组的日期时间记录

问题修复说明

核心错误点

  • 比较逻辑语法错误:JavaScript 不支持 a <= b < c 形式的连写判断,该写法会先计算前半段的布尔结果,再用布尔值和第三个值比较,完全不符合预期判断逻辑。
  • 数据类型不匹配:check_in、check_out 字段是字符串格式,无法直接和 Date 类型的当前时间做大小比较,需要先转换为 Date 实例。
  • 筛选结果未使用:调用 filter 得到符合条件的 FinalBooking 后,渲染时仍遍历原始的 booking_status 数组,筛选逻辑没有实际生效。
  • 缺少空值处理:没有判断筛选结果为空的场景,无法输出要求的「NOTHING」提示。
  • HTML 语法错误:拼接行代码时写了多余的尖括号 <tr>><td>,会导致表格结构渲染异常。

修正后代码

<script>
$(document).ready(function () {
    $.ajax({
        url: 'http://localhost:8000/',
        dataType: 'JSON',
        success: function (data) {
            var content = ''
            // 提到循环外避免重复创建实例,同一批数据的判断时间统一即可
            const currentDatetime = new Date();
            data.forEach(item => {
                const booking = item.booking_status;
                // 修正筛选逻辑:转时间格式 + 拆分判断条件
                const FinalBooking = booking.filter(obj => {
                    const checkInTime = new Date(obj.check_in);
                    const checkOutTime = new Date(obj.check_out);
                    return currentDatetime >= checkInTime && currentDatetime < checkOutTime;
                })
                // 按要求处理空结果
                const statusText = FinalBooking.length 
                    ? FinalBooking.map(s => s.status).join('<br/>') 
                    : 'NOTHING';
                // 修正多余的尖括号
                content += "<tr><td>"
                    + item.item_name + "</td><td>"
                    + item.author+ "</td><td>"
                    + statusText + "</td></tr>"
            })
            $('#table_body').html(content);
        }
    })
});
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:54:05