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

如何在JavaScript中为Map设置默认值并正确统计团队各职业人数

修正团队职业统计函数的方案

我来帮你搞定这个统计职业人数的问题!先拆解下原来代码里的几个关键坑:

  • value变量没有绑定到每个职业的当前计数,导致自增逻辑完全混乱
  • 循环里额外的i++会跳过一半团队成员,统计结果自然不对
  • 用some方法判断职业匹配的方式完全误用,它的返回逻辑和计数需求不搭

下面是修正后的函数,我会一步步解释关键改动:

const salaries = { 
  Progger: {salary: 1000, tax: '15%'}, 
  Tester: {salary: 800, tax: '10%'}, 
  Manager: { salary: 1000, tax: '10%' }, 
  Designer: { salary: 600, tax: '30%' }, 
  Artist: { salary: 1500, tax: '15%' } 
};
const team = [ 
  { name: 'Vasya', specialization: 'Tester' }, 
  { name: 'Taras', specialization: 'Tester' }, 
  { name: 'Taras I', specialization: 'Tester' }, 
  { name: 'Tapas', specialization: 'Humor' }, 
  { name: 'Misha', specialization: 'Manager' }, 
  { name: 'Max', specialization: 'Designer' }, 
  { name: 'Vova', specialization: 'Designer' }, 
  { name: 'Leo', specialization: 'Artist' } 
];

function calculateTeamFinanceReport(salaries, team) {
  // 1. 初始化Map,给salaries里的每个职业设置默认计数0
  const professionCounts = new Map(
    Object.keys(salaries).map(prof => [prof, 0])
  );

  // 2. 遍历团队成员,统计匹配的职业
  for (const member of team) {
    const spec = member.specialization;
    // 只统计在salaries里存在的职业
    if (professionCounts.has(spec)) {
      // 获取当前计数并自增1,更新到Map里
      professionCounts.set(spec, professionCounts.get(spec) + 1);
    }
  }

  return professionCounts;
}

// 测试结果:Tester => 3, Manager =>1, Designer=>2, Artist=>1, Progger=>0
console.log(calculateTeamFinanceReport(salaries, team));

关键改动说明:

  • 初始化Map默认值:用Object.keys(salaries).map()把每个职业转换成[职业名, 0]的数组,直接传给Map构造函数,一次性完成所有职业的默认计数初始化
  • 正确遍历团队成员:用for...of循环遍历team数组,避免手动操作索引导致的跳步问题
  • 安全的计数自增:先通过professionCounts.get(spec)获取当前职业的计数,加1后再用set更新Map,确保每次计数都是正确累加的
  • 忽略不匹配的职业:通过professionCounts.has(spec)判断,直接跳过不在salaries里的职业(比如示例中的'Humor')

这样修正后,函数就能返回正确的职业人数统计了:Tester有3人,Manager1人,Designer2人,Artist1人,Progger因为团队里没人从事该职业,所以计数为0。

内容的提问来源于stack exchange,提问作者Володимир К

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:48:12