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

嵌套forEach循环向数组push值时出现重复结果问题求解

问题根因
  • 你在else if分支中嵌套了childBirthDate数组的全量遍历逻辑,每次进入该分支都会遍历所有人员的出生日期,反复覆盖childEndDate变量的值,遍历结束后该变量只会保留数组最后一个元素(2010年出生的那条记录)的18年到期计算结果,所有符合else if条件的项推入数组的都是同一个值
  • 外层遍历的childbirthYear数组和childBirthDate数组是一一对应的关系,你的代码没有按索引关联两个数组的对应项,自然无法拿到对应人员的出生日期做计算
修复代码
this.childBirthDate.forEach((dateItem, index) => {
  const currentBirthYear = this.childbirthYear[index];
  let childEndDate;
  if (periodEndYear - currentBirthYear < 18) {
    childEndDate = this.endDate;
  } else {
    childEndDate = addYears(new Date(dateItem), 18).toISOString();
  }
  this.final.push(childEndDate);
});
console.log(this.final);
修复说明
  1. 移除了else if分支中冗余的全量遍历逻辑,直接取当前遍历索引对应的出生日期计算,避免值被覆盖
  2. 将childEndDate改为循环内的局部变量,避免全局变量复用导致的副作用
  3. 简化了判断逻辑,if分支已经覆盖小于18岁的场景,else分支自然对应大于等于18岁的场景,无需重复判断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:04