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

如何将数组转换为对象?人员数组按年龄区间分组实现需求

实现按年龄区间分组成年人的函数

我来帮你搞定这个分组需求,咱们一步步来实现符合要求的groupAdultsByAgeRange函数:

先明确核心规则

从示例和描述里,我们能提炼出关键逻辑:

  • 只处理成年人(示例中9岁的Henry被排除,所以默认年龄≥18才算成年人)
  • 按固定年龄区间分组,空区间不会出现在结果里
  • 空输入直接返回空对象

完整代码实现

function groupAdultsByAgeRange(people) {
  // 空输入直接返回空对象
  if (!people.length) return {};

  // 第一步:过滤出成年人
  const adults = people.filter(person => person.age >= 18);

  // 初始化所有可能的年龄区间容器
  const ageGroups = {
    '20 and younger': [],
    '21-30': [],
    '31-40': [],
    '41-50': [],
    '51 and older': []
  };

  // 第二步:把成年人分配到对应区间
  adults.forEach(person => {
    const age = person.age;
    if (age <= 20) {
      ageGroups['20 and younger'].push(person);
    } else if (age <= 30) {
      ageGroups['21-30'].push(person);
    } else if (age <= 40) {
      ageGroups['31-40'].push(person);
    } else if (age <= 50) {
      ageGroups['41-50'].push(person);
    } else {
      ageGroups['51 and older'].push(person);
    }
  });

  // 第三步:移除没有人员的空区间
  Object.keys(ageGroups).forEach(key => {
    if (!ageGroups[key].length) delete ageGroups[key];
  });

  return ageGroups;
}

测试验证示例

示例1测试

console.log(groupAdultsByAgeRange([{name: "Henry", age: 9}, {name: "John", age: 20}]));
// 输出:{ '20 and younger': [ { name: 'John', age: 20 } ] }

Henry因是未成年人被过滤,John被分到对应区间。

示例2测试

console.log(groupAdultsByAgeRange([{name: "Anna", age: 31}, {name: "John", age: 32}, {name: "Hank", age: 60}]));
// 输出:{ '31-40': [ { name: 'Anna', age: 31 }, { name: 'John', age: 32 } ], '51 and older': [ { name: 'Hank', age: 60 } ] }

Anna和John进入31-40区间,Hank进入51及以上区间,空区间自动被移除。

空输入测试

console.log(groupAdultsByAgeRange([]));
// 输出:{}

这个实现逻辑清晰,完全贴合需求,还能灵活处理各种边界情况~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:13