JS开发:如何从对象中筛选最长任职教师及获取次要教师信息
筛选对象中任职天数最长/最短教师的解决思路
目标数据结构
{ 1252 = { [Monday, { Teacher1 = { Periods = [ [06/02/2023, 30/06/2023, 146 days] ] }, Teacher2 = { Periods = [ [21/11/2022, 05/02/2023, 74 days] ] } }] } }
该结构表示编号1252的条目下,周一有两位教师,各自拥有独立的任职时间段及对应天数。
需求1:选出任职天数最长的教师并生成指定数组
按以下步骤操作:
- 定位目标教师集合:直接访问编号1252下的周一教师数据,语法可根据你使用的语言调整,比如
yourData[1252][Monday]。 - 提取教师核心信息:遍历每个教师,从其
Periods中提取名称、起止日期、任职天数。假设每个教师只有一个时间段,提取后得到类似列表:
如果教师有多个时间段,需先将所有时间段的天数求和,再作为该教师的总任职天数。[ {name: "Teacher1", startDate: "06/02/2023", endDate: "30/06/2023", days: 146}, {name: "Teacher2", startDate: "21/11/2022", endDate: "05/02/2023", days: 74} ] - 按天数排序:将上述列表按
days字段降序排列,排序后的第一个元素就是任职天数最长的主教师。 - 生成目标数组:按照要求的格式组合数据,最终得到:
[[1252, "Monday", "Teacher1", "06/02/2023", "30/06/2023", 146]]
需求2:获取任职天数较少的第二位教师信息
基于需求1的排序结果:
- 排序后的列表中,第二个元素(索引根据语言从0或1开始调整)就是任职天数较少的教师,直接提取其名称、起止日期、天数即可。
- 如果存在超过2位教师的情况,若需求是取除最大值外的所有教师,可遍历排序列表从第二个元素开始的所有项;若仅需第二位,直接取对应索引元素即可。
内容的提问来源于stack exchange,提问作者user13746257
相关产品推荐
相关产品推荐

