Javascript 对工作日数组进行排序

标签 javascript arrays

也许有人可以解释我如何对周一开始的工作日数组进行排序...

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/

相关文章:

java - java中 double 的选择排序

javascript - 在 Array A 之后对 Array B 排序,这样引用和相等的 Primitives 保持准确的位置

javascript - firefox/edge 中的 HTML 自定义元素

arrays - 如何在 Fortran 中初始化二维数组

javascript - 查找数组中出现次数为偶数的单词 - Javascript

javascript - 可定制/主题化的用户界面

javascript - 如何在 App 脚本中比较 2 个数组

javascript - GMaps JS 地理编码 : Using/Passing Variables With Asynchronous Geocode Function?

javascript - 单击文档但不单击具有纯 JavaScript 的特定 div

javascript - 在父级中使用 javascript 编辑 iframe 的 DOM