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

JavaScript日期数组处理:将重复日期替换为false的实现方法

处理重复日期数组的实用方案

刚好做过类似的需求,给你两种简单高效的实现方式,都能完美达到你想要的效果:

方法一:用对象跟踪已出现日期

这是最直观的实现思路,用一个普通对象记录每个日期是否已经出现过:

const dates = ["2018-04-25", "2018-04-25", "2018-04-26", "2018-04-27", "2018-04-28", "2018-04-28"];
const seenDates = {};

const processedDates = dates.map(date => {
  // 如果当前日期已经被记录过,返回false
  if (seenDates[date]) {
    return false;
  }
  // 第一次遇到该日期,标记为已出现,返回原日期
  seenDates[date] = true;
  return date;
});

console.log(processedDates);
// 输出结果:["2018-04-25", false, "2018-04-26", "2018-04-27", "2018-04-28", false]

方法二:用ES6 Set实现(更简洁)

如果习惯ES6语法,用Set来存储已出现的日期会更优雅,逻辑和上面完全一致:

const dates = ["2018-04-25", "2018-04-25", "2018-04-26", "2018-04-27", "2018-04-28", "2018-04-28"];
const seenSet = new Set();

const processedDates = dates.map(date => {
  if (seenSet.has(date)) {
    return false;
  }
  seenSet.add(date);
  return date;
});

关键说明

  • 两种方法的时间复杂度都是O(n),只需要遍历数组一次,效率很高
  • 逻辑都是保留第一次出现的日期,把后续重复的替换为false,完全匹配你的需求
  • 如果你的数组里可能存在非字符串类型的日期(比如Date对象),只需要把判断条件改成对应的比较逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:18:43