Flutter中如何按升序排序星期名称列表
按星期逻辑顺序排序列表的解决方案
你之前用的字符串排序是按字母顺序比较的,这自然不符合我们实际需要的星期时间顺序——毕竟按字母排的话Friday会排在Monday前面,但我们要的是从周一到周日的逻辑排序。
要解决这个问题,你可以先定义一个标准的星期顺序参考数组,然后根据每个星期名称在这个数组中的索引位置来进行排序:
示例代码
首先定义星期的正确顺序:
const weekOrder = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
然后用这个参考数组对目标列表排序:
const list = ['Friday', 'Monday', 'Sunday', 'Wednesday']; list.sort((a, b) => weekOrder.indexOf(a) - weekOrder.indexOf(b));
如果你的列表里可能存在大小写不一致的情况(比如有小写的friday),可以统一转成小写后再匹配索引:
const weekOrder = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']; const list = ['Friday', 'Monday', 'Sunday', 'Wednesday']; list.sort((a, b) => { const indexA = weekOrder.indexOf(a.toLowerCase()); const indexB = weekOrder.indexOf(b.toLowerCase()); return indexA - indexB; });
运行上面的代码后,就能得到你期望的结果:
[Monday, Wednesday, Friday, Sunday]
内容的提问来源于stack exchange,提问作者Muzammil Hassan
相关产品推荐
相关产品推荐

