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

forEach内使用if else统计年龄段人数出现重复插入及undefined问题

问题原因

1. travellerCount为undefined的原因

遍历拿到的a是年龄数组中的单个数值,数字类型不存在length属性,所以a.length取值自然为undefined。

2. 同年龄段重复插入的原因

你在遍历每个年龄时直接执行push操作,同一个年龄段匹配到多少个年龄就会插入多少条记录,不符合每个年龄段只存一条统计结果的需求。

解决方法

正确逻辑应该是先统计各年龄段总人数,再统一生成最终的统计数组,参考代码如下:

this.ages = [18, 20, 1];
// 先初始化计数对象,key为年龄段id,value为对应人数
const ageRangeCount = {
  1: 0, // 0-1岁婴儿对应的id
  3: 0 // 12-59岁成人对应的id
};

// 第一步:遍历年龄数组统计各年龄段人数
this.ages.forEach(a => {
  if (a >= 0 && a <= 1) {
    ageRangeCount[1]++;
  } else if (a >= 12 && a <= 59) {
    ageRangeCount[3]++;
  }
});

// 第二步:生成符合要求的统计数组,过滤掉人数为0的年龄段
this.travel.listOfTravellerCountPerAgeRange = Object.entries(ageRangeCount)
  .filter(([ageRangeId, count]) => count > 0)
  .map(([ageRangeId, count]) => ({
    travellerAgeRangeId: Number(ageRangeId),
    travellerCount: count
  }));

console.log(this.travel);

运行后输出的listOfTravellerCountPerAgeRange就是你期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:05