也许有人可以解释我如何对周一开始的工作日数组进行排序...
export const WeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
WeekDays.sort(
(a, b) =>
WeekDays.indexOf(a) - WeekDays.indexOf(b)
);
但结果是:星期三、星期一、星期二、星期五、星期三...... 希望有人能帮忙。
最佳答案
问题是 sort()
执行就地排序,而不是返回新的排序数组,因此您的引用数组正在排序。尝试对单独的数组进行排序:
const WeekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
const daysToBeSorted = WeekDays.slice();
daysToBeSorted.sort(
(a, b) =>
WeekDays.indexOf(a) - WeekDays.indexOf(b)
);
也就是说,这种方法是在每次排序迭代中查找当天的索引 (indexOf()
),这通常效率不高。您可以使用 Map 或对象来快速访问当天的索引。
关于Javascript 对工作日数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67690482/