【问题标题】:Re-Ordering an Array to Match Specific Criteria重新排序数组以匹配特定条件
【发布时间】:2021-03-27 17:00:54
【问题描述】:

我一直在尝试找出一种方法来按特定顺序对以下数组进行排序,但被卡住了。我有以下 Javascript 员工数组:

var employees = [
        {employee_name: "Bob Taylor", position: "AG", date_hired: "2020-01-01 08:00:00"},
        {employee_name: "Amy Thomas", position: "AG/NG", date_hired: "2020-01-02 08:00:00"},
        {employee_name: "Robert Atkin", position: "NG", date_hired: "2020-01-01 08:00:00"},
        {employee_name: "Pam Holland", position: "NG/JF", date_hired: "2020-01-05 08:00:00"},
        {employee_name: "Suzy Roberts", position: "KF", date_hired: "2020-01-01 08:00:00"},
        {employee_name: "James Thornton", position: "KF/V", date_hired: "2020-01-07 08:00:00"},
        {employee_name: "Andrew Pebbles", position: "KF/V", date_hired: "2020-01-01 08:00:00"},
        {employee_name: "Lisa Acosta", position: "V", date_hired: "2020-01-02 08:00:00"}
];

我需要重新排序员工列表,使其符合以下顺序:

var positions = ["AG","NG","JF","KF","V","G","F","ANY"];

“G”和“F”职位可以由职位中包含“G”或“F”的任何员工填补。 “ANY”职位是通配符,可以由任何员工填补。

基本上,只要员工数组中的员工职位包含职位数组中的字符串之一(“ANY”是通配符除外),他/她就有资格担任该职位。

在这个特定的例子中,数组中总是会有 8 名员工。 Amy Thomas 将能够满足列表中的“AG”、“NG”、“G”和“ANY”职位要求。 Pam Holland 将能够履行“NG”、“JF”、“G”、“F”和“ANY”的职位。 James Thornton 可以完成“KF”、“V”、“F”和“ANY”的职位,而 Lisa Acosta 可以完成“V”和“ANY”的职位。

因此,在 Pam Holland 的情况下,她必须是数组中的第三个元素,因为她是列表中唯一满足“JF”职位的员工。

我想找出一个重新排序员工数组直到满足条件的函数。但是,此功能还需要确保在仍满足职位要求的情况下按最早雇用日期到最晚雇用日期对其进行排序。我希望这是有道理的。

如果我的解释不清楚,请随时回复。

【问题讨论】:

    标签: javascript arrays sorting


    【解决方案1】:

    可以使用Array.sort方法,提供比较功能:

     function comparePosition(employee1, employee2) { 
      if (employee1 is 'inferior' to employee2)
         return -1;
      if (employee1 is 'superior' to employee2)
         return 1;
      // employee1 and employee2 are at the same level
      return 0;
     }
    
    employees.sort(comparePosition)
    

    【讨论】:

    • 当然,你可以在职位相似的情况下比较你的招聘日期,我只是为你提供了比较功能的基本原理。
    • 抱歉,我读得太快了,不明白你想要的不仅仅是从高位到低位排序。
    猜你喜欢
    • 2022-01-02
    • 2020-12-10
    • 2017-09-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    相关资源
    最近更新 更多