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

如何在现有数组中为无工时记录的年份添加‘0 min’

自动补全年份缺失工时的实现方案

你的手动splice硬编码索引的方式太脆弱,只要数组内容或顺序变动就会失效,下面是动态遍历的通用解决方案:

核心思路是倒序遍历数组(避免插入元素打乱后续遍历的索引),判断每个元素是否为年份(即不包含"min"的字符串),如果当前年份的下一个元素不是工时记录(或者当前是数组最后一个元素),就插入"0 min"。

实现代码:

const processMinutes = [
  '1990',    '180min',  '1991',
  '135 min', '1992',    '126 min',
  '1993',    '1994',    '182 min',
  '1995',    '1996',    '118 min',
  '1997',    '1998',    '136min',
  '199',     '144 min', '2000'
];

// 倒序遍历数组,防止插入元素影响后续索引位置
for (let i = processMinutes.length - 1; i >= 0; i--) {
  const currentItem = processMinutes[i];
  // 判断当前项是否是年份:不含"min"关键字
  if (!currentItem.includes('min')) {
    const nextItem = processMinutes[i + 1];
    // 下一项不存在,或者下一项不是工时记录(不含min),则插入0 min
    if (!nextItem || !nextItem.includes('min')) {
      processMinutes.splice(i + 1, 0, '0 min');
    }
  }
}

console.log(processMinutes);

为什么用倒序遍历?

如果正序遍历数组,当你在某个位置插入元素后,后续所有元素的索引都会+1,导致遍历逻辑混乱(比如重复处理或跳过元素)。倒序遍历则不会有这个问题,因为我们处理的是数组末尾的元素,前面的插入操作不会影响已经遍历过的位置。

效果验证

运行上述代码后,输出结果完全符合你的期望:

[
  '1990',    '180min',  '1991',
  '135 min', '1992',    '126 min',
  '1993',    '0 min',   '1994',
  '182 min', '1995',    '0 min',
  '1996',    '118 min', '1997',
  '0 min',   '1998',    '136min',
  '199',     '144 min', '2000',
  '0 min'
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:35:00