首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为JS中的每个对象设置默认值以设置Map和/或value++

如何为JS中的每个对象设置默认值以设置Map和/或value++
EN

Stack Overflow用户
提问于 2022-08-09 14:48:27
回答 2查看 164关注 0票数 1
代码语言:javascript
运行
复制
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,'Tester’=> 4,'Manager‘=> 5,'Designer’=> 7,'Artist‘=> 8

我需要在这里数一数人们有多少准确的职业。相反,我得到了总数。另外,来自teamteam必须在salaries中,否则=忽略并继续。

代码语言:javascript
运行
复制
team.specialization == salaries[any]

如何对每个行业进行正确的计数?或者如何将默认值1设置为proffesions映射对象,然后将其设置为++?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-09 15:35:03

H 212H 113然后.get() .get() proffesions映射,并将value添加到salary中的.set()valueproffesions地图。HF 226

代码语言:javascript
运行
复制
const salaries={Programmer:{salary:1e3,tax:"15%"},Tester:{salary:800,tax:"10%"},Manager:{salary:1e3,tax:"10%"},Designer:{salary:600,tax:"30%"},Executive:{salary:1500,tax:"15%"}},team=[{name:"Vasya",specialization:"Tester"},{name:"Taras",specialization:"Tester"},{name:"Taras I",specialization:"Tester"},{name:"Tapas",specialization:"Programmer"},{name:"Misha",specialization:"Manager"},{name:"Max",specialization:"Designer"},{name:"Vova",specialization:"Designer"},{name:"Leo",specialization:"Executive"},
{name:"Ivan",specialization:"Unemployed"}];

function calculateTeamFinanceReport(salaries, team) {
  const proffNames = Object.keys(salaries);
  let proffesions = new Map();
  let dept = {};
  let value = 0;

  for (let i = 0; i < team.length; i++) {
    let specialization = team[i].specialization;
    proffNames.forEach(proffesion => {
      if (specialization === proffesion) {
        value = salaries[proffesion]['salary'] || 0;
        if (!dept[proffesion]) {
          proffesions.set(proffesion, 0);
          dept[proffesion] = 0;
        }
        dept[proffesion] = value;
        let v = proffesions.get(proffesion);
        value = v + value;
        proffesions.set(proffesion, value);
      }
    });
  }
  return proffesions
}

console.log(Array.from(calculateTeamFinanceReport(salaries, team).entries()));

票数 1
EN

Stack Overflow用户

发布于 2022-08-09 16:51:18

代码语言:javascript
运行
复制
function totalMembers(teams, selectedTeam) {
     return teams.filter(team => team === selectedTeam)?.length;
 }

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

代码语言:javascript
运行
复制
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;
}

totalMember用于专门化,然后将其保存为专门化,然后从那里开始下一轮,以此类推。

输出:

希望这个答案能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73293842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档