课程 286 / 365
78%
正文已完成
L286排序前先定义相等与稳定性
判断多字段排序、稳定排序和原地修改对产品结果的影响。
“按优先级排序”往往不够。当优先级相同,是保持原到达顺序、再按时间,还是按名称?排序是否修改原集合?这些决定会改变用户看到的结果,也决定测试能否复现。
能为一项排序需求写出完整比较规则,并说明相等项的处理。
核心概念
先把关键判断说清楚
比较器必须覆盖相等
比较规则不仅要说明谁在前,还要说明主字段相同时用什么次字段或保留原顺序。
稳定性保存原有关系
稳定排序让比较结果相等的元素维持输入顺序,适合先按一个字段排好再叠加另一个字段。
原地排序会改变共享状态
如果多个界面引用同一列表,直接修改可能让另一个界面的顺序悄悄变化;复制排序更安全但占用额外空间。
案例拆解
工单列表的可复现排序
工单按优先级展示,但同优先级每次刷新顺序不同,客服难以确认刚才处理到哪里。
- 01
主字段定义为优先级 P0→P3。
- 02
同优先级按创建时间升序,时间相同再按工单 ID 升序。
- 03
在派生列表上排序,不修改原始响应缓存。
案例结果
任意刷新都得到相同顺序,其他视图也不受排序副作用影响。
提交前练习
现在轮到你
为一个多字段列表写出可复现的排序契约。
内容会自动保存在当前设备
查看参考答案与评分标准
参考答案
主键是截止日期升序,空值最后;相等时按创建时间升序,再按任务 ID;从原数组复制后排序;样例 T3(8/1)、T1(8/1)、T2(空) 依创建时间输出 T1、T3、T2。
评分标准
- 主键含方向与空值
- 相等项有确定规则
- 样例可以验证比较器
本课收口 · 学习证据
完成,不等于随手打一个勾。
确认阅读、保存练习,再用 30 秒检查和一句话总结留下真实学习证据。
02完成本课练习0 / 4 项必填内容已填写
03通过理解检查约 30 秒
你现在更接近哪一种状态?
完成上面三项后,才能把本课记为已验证。
资料来源
继续核对与延伸阅读
本课内容最近更新于 。
- MDN Web Docs↗reference · 核对日期 2026-08-23