如何在 JS 中设置默认值来设置 Map 和/或 value++

问题描述 投票:0回答:3
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) {
  const proffNames = Object.keys(salaries);
  let proffesions = new Map();
  let result = {};
  let value;

  // for (let every of proffNames) {
  //   proffesions.set(every, 0)
  // }

  for (let i = 0; i < team.length; i++) {
    let specialization = team[i].specialization;
    if (proffNames.some(proffesion => {   //specialisation has to be salaries `team.specialization == salaries[any]`
      if (specialization === proffesion) {
        value = value || 0;
        proffesions.set(proffesion, value++); // Right count here needed
      }
    }))
      i++;
  }
  return proffesions
}

结果 = 'Progger' => 1, '测试员' => 4, '经理' => 5, '设计师' => 7, '艺术家' => 8

我需要在这里统计有多少人拥有确切的职业。相反,我得到了总数。 另外,来自

specialisation
team
必须位于
salaries
中,否则 = 忽略并继续。

team.specialization == salaries[any]

如何获得每个职业的正确计数? 或者如何为

1
地图对象设置默认值
proffesions
然后 ++ 它?

javascript foreach count
3个回答
1
投票
  • value
    salaries[proffesion]['salary']
  • 如果
    proffesion
    对象(原本是
    dept
    )中没有
    result = {}
    ,则将其添加到
    dept
    对象并在
    .set()
    地图中
    proffesions
  • 然后将
    .get()
    中的
    proffesion
    映射并将
    proffesions
    添加到
    value
     中的 
    salary
    最后
  • dept[proffesion]
  • 新的
    .set()
    value
    地图。
    
    

proffesions


0
投票
此函数将返回 team 数组中提供的团队的总成员数。

function totalMembers(teams, selectedTeam) { return teams.filter(team => team === selectedTeam)?.length; }

function calculateTeamFinanceReport(salaries, team) { const teamHashTable = {}; let totalMember = 1; for (const specialization in salaries) { const teamSpecializations = team.map(t => t.specialization); totalMember += totalMembers(teamSpecializations, specialization); teamHashTable[specialization] = totalMember; } return teamHashTable; }

作为专业化,然后将其保存为专业化,然后从那里开始下一回合,依此类推。

输出:

希望这个答案对你有帮助!


0
投票

totalMember

© www.soinside.com 2019 - 2024. All rights reserved.