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

如何在对象数组中按日期分组查找每组holiday_for属性最大值的对象

解决方案

你之前的代码仅做了全局的holiday_for优先级比对,没有按日期分组处理,按如下修改reduce逻辑即可实现需求:

const holidays = [
    { id: 1, holiday_for: 1, holiday_on: "2021-10-26" },
    { id: 2, holiday_for: 3, holiday_on: "2021-10-26" },
    { id: 3, holiday_for: 1, holiday_on: "2021-11-26" },
    { id: 4, holiday_for: 3, holiday_on: "2021-11-26" },
    { id: 5, holiday_for: 4, holiday_on: "2021-11-26" }
];

const filtered = Object.values(holidays.reduce((acc, cur) => {
  const currentDate = cur.holiday_on;
  // 若当前日期没有存储记录,或当前项的holiday_for优先级更高,就替换存储值
  if (!acc[currentDate] || cur.holiday_for > acc[currentDate].holiday_for) {
    acc[currentDate] = cur;
  }
  return acc;
}, {}));

逻辑说明

  • 以holiday_on日期值为累加器对象的键,每个键对应的值是该日期下当前优先级最高的假期对象
  • 遍历所有元素时,若当前日期未在累加器中记录,或当前元素的holiday_for值大于已存储的同日期对象的值,就更新累加器中对应日期的存储值
  • 最后用Object.values()把累加器对象中的所有值提取为数组,即为你需要的输出结果,输出格式如下:
[
  { id: 2, holiday_for: 3, holiday_on: "2021-10-26" },
  { id: 5, holiday_for: 4, holiday_on: "2021-11-26" }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:48:03