无需拆分数组:按子数组匹配+日期排序对象数组的方案咨询
优化后的单次数组排序实现
直接通过自定义Array.sort()的比较器规则即可实现,无需拆分多个子数组:
const finalArr = jobs.sort((a, b) => { // 第一优先级:匹配指定role的条目排前面 const aHasRole = a.role.includes(role) const bHasRole = b.role.includes(role) if (aHasRole && !bHasRole) return -1 if (!aHasRole && bHasRole) return 1 // 同一分组内按日期升序排列 return new Date(a.date) - new Date(b.date) })
方案说明
- 排序逻辑按优先级分层处理:优先判断是否匹配目标角色,匹配项权重高于未匹配项,会自动排在数组前半段
- 同属匹配/未匹配分组的条目,将日期转换为时间戳做差即可实现升序排序,若需要降序仅需调换
a.date和b.date的位置 - 相比拆分过滤再合并的方案,仅需要一次排序遍历,减少了数组遍历次数,代码逻辑更聚合简洁
内容的提问来源于stack exchange,提问作者msmoore
相关产品推荐
相关产品推荐

