排序 返回最能胜任且报酬最高的任务

75 阅读1分钟

题目

给定一组工作,每个工作有困难程度和报酬两个属性,每个工作可以被选择任意次数,给定一组带有能力程度的人员,返回每个人员能够胜任且报酬最高的工作

  • 将工作先按困难程度排序,如果工作困难程度相等,再按照报酬排序
  • 排序完成后,只保留同一组任务中第一个,不同组任务,去掉难度增加报酬没有增加的任务,最后根据每个人员返回最接近其能力的工作即可
function process(n) {}

const arr = [
  { hard: 3, money: 5 },
  { hard: 2, money: 7 },
  { hard: 9, money: 10 },
  { hard: 1, money: 4 },
  { hard: 2, money: 6 },
  { hard: 3, money: 3 },
  { hard: 1, money: 1 },
  { hard: 2, money: 8 },
];

console.log(
  arr.sort((a, b) => {
    if (a.hard !== b.hard) {
      return a.hard - b.hard;
    } else {
      return a.money - b.money;
    }
  })
);

// 排序后:a) 相同组保留第一个; b) 不同组难度增加,报酬也增加的保留,否则删掉