【问题标题】:Divide the Bonus [closed]分配奖金[关闭]
【发布时间】:2019-06-10 03:33:30
【问题描述】:

我有一个员工列表(数组),他们将获得如下奖励:

  • 常量工作者 = [ {name: "John", prize: 1000, prioritize: 1}, {name: "Andy", prize: 2000, prioritize: 2}, {name: "Bill", prize: 2200, prioritize: 3}, {name: :Carry", prize: 3100, prioritize: 4}, {name: "Asawa", prize: 4000, prioritize: 5} ]; //(数组Worker不固定...)

  • 让 TotalPrize = 7100 // 基金分红

问题:我想从上面的列表中减去 TotalPrize (1-> 2-> 3 ...),以便工人按优先顺序获得全部奖品:

  • 约翰:1000(满)
  • 安迪:2000(满)
  • 账单:2200(满)
  • Carry:1900(上面的列表,Carry必须是3100,但是因为TotalPrize = 7100已经提前分成了前三个剩下的1900)
  • 浅泽:0(因为前4人的钱都平分了)

谁有解决方案并帮助我解决问题,绝望了 2 周。好难过

【问题讨论】:

  • 感谢您的回复,我已经尝试过选项但一直没有找到最终答案,我是 nodejs 的新手

标签: javascript arrays node.js


【解决方案1】:

请检查以下代码,希望对您有所帮助

let totalPrize = 7100;

const workers = [
    {
      name: "John",
      prize: 1000,
      prioritize: 1
    }, {
      name: "Andy",
      prize: 2000,
      prioritize: 2
    }, {
      name: "Bill",
      prize: 2200,
      prioritize: 3
    }, {
      name: "Carry",
      prize: 3100,
      prioritize: 4
    }, {
      name: "Asawa",
      prize: 4000,
      prioritize: 5
    }
  ];

const sortedWorkers = workers.sort((obj1, obj2) => obj1.prioritize > obj2.prioritize);

let finalResult = [];

sortedWorkers.map(worker => {
  if (totalPrize >= worker.prize) {
    finalResult.push({
      [worker.name]: worker.prize,
    });
    totalPrize -= worker.prize;
  } else {
    finalResult.push({
      [worker.name]: 0,
    });
  }
});

console.log(finalResult);

【讨论】:

  • 太好了,这正是我想要的。非常感谢你
  • 很高兴为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2016-12-22
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
相关资源
最近更新 更多