You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript星期数组排序无效问题:如何实现预期排序结果?

解决星期名称数组排序失效的问题

你的代码排序失效的核心问题是:错误地访问了字符串元素的day属性。

数组dayList里的元素是纯字符串(比如'Mon'),并不是包含day字段的对象,所以a.day和b.day的结果都是undefined。当你用map[undefined]时会得到undefined,undefined - undefined等于NaN,而sort函数遇到返回值为NaN的情况时,不会调整元素的顺序,所以数组保持原样。

修改方法很简单,直接用数组元素本身作为映射对象的键即可:

var dayList = ['Mon', 'Fri', 'Sun', 'Wed', 'Sat'];

const map = {
   'Mon': 1,'Tue': 2,'Wed': 3,'Thu': 4,'Fri': 5,'Sat': 6, 'Sun': 7
};

dayList.sort((a, b) => {
   return map[a] - map[b];
});

console.log(dayList); // 输出:["Mon", "Wed", "Fri", "Sat", "Sun"]

补充说明:如果你的数组元素是对象类型(比如[{day: 'Mon'}, {day: 'Fri'}, ...]),那原代码中a.day的写法才是正确的,但当前场景下数组是纯字符串集合,直接使用元素本身即可完成映射排序。

内容的提问来源于stack exchange,提问作者HiDayurie Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 16:59:57