如何处理日期对象数组,计算每个元素与今日的天数差?
问题描述
我有一个包含日期对象的数组sortedOpenBill,需要计算并展示数组中每个日期对象的deadline与今日之间的天数差。目前代码只能处理数组的第一个元素,请问怎么修改适配整个数组?
现有代码:
const diffDaysinMS = new Date(sortedOpenBill[0]?.deadline).getTime() - new Date().getTime(); const diffDays = Math.ceil(diffDaysinMS / (1000 * 3600 * 24));
解决方案
你可以用数组的map方法遍历整个数组,对每个元素执行天数差计算逻辑:
// 先获取今日时间戳,避免每次循环重复创建Date对象 const todayTime = new Date().getTime(); // 遍历数组,返回每个元素对应的天数差数组 const diffDaysArray = sortedOpenBill.map(item => { if (!item?.deadline) return null; // 处理deadline不存在的情况 const diffDaysinMS = new Date(item.deadline).getTime() - todayTime; return Math.ceil(diffDaysinMS / (1000 * 3600 * 24)); });
补充说明
map方法会遍历整个数组,给每个元素计算对应的天数差,最终返回一个新的结果数组- 把今日时间戳提前提取到循环外,减少不必要的
Date对象创建,提升性能 - 保留了可选链
?.来处理元素或deadline不存在的情况,避免代码报错 - 如果遇到没有
deadline的元素,当前代码会返回null,你可以根据需求改成0或者其他默认值
内容的提问来源于stack exchange,提问作者triple-D
相关产品推荐
相关产品推荐

