Javascript 按顺序重新排列月份顺序

Javascript 按顺序重新排列月份顺序,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我用一组月份填充数组,如下所示: var months=["March 2016","April 2016","May 2016","January 2015","February 2016"] 考虑到年份,我如何按如下顺序重新安排月份….: var months=["January 2015","February 2016","March 2016","April 2016","May 2016",] 我试图对月份进行排序(),但这不符合逻辑。对此问题有何建议?您可以使用包含月份列表的数组

我用一组月份填充数组,如下所示:

var months=["March 2016","April 2016","May 2016","January 2015","February 2016"]
考虑到年份,我如何按如下顺序重新安排月份….:

var months=["January 2015","February 2016","March 2016","April 2016","May 2016",]

我试图对月份进行排序(),但这不符合逻辑。对此问题有何建议?

您可以使用包含月份列表的数组作为参考,然后检查索引

var months=["March 2015","April 2016","May 2016","January 2015","February 2016"];
var m = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

months.sort(function(a,b){
    var yearA = a.split(" ")[1];
    var yearB = b.split(" ")[1];
    if (yearA != yearB){ return +yearA - +yearB ;}
    return m.indexOf(a.split(" ")[0]) -  m.indexOf(b.split(" ")[0]);
});

// ["January 2015", "March 2015", "February 2016", "April 2016", "May 2016"]

您可以将两者转换为日期对象,然后使用排序

["March 2016","April 2016","May 2016","January 2015","February 2016"].sort(function(a, b) { 
     return new Date("1 " + a) - new Date("1 " + b); 
})


编辑:感谢@Hacketo指出,
getTime()
(答案的原始版本)实际上不是必需的。

您可以将对象与月份的顺序值一起使用,并按年份和月份值对其进行排序

var月数=[“2016年3月”、“2016年4月”、“2016年5月”、“2015年1月”、“2016年2月];
月份。排序(功能(a、b){
var MONTH={1月:0日,2月:1日,3月:2日,4月:3日,5月:4日,6月:5日,7月:6日,8月:7日,9月:8日,10月:9日,11月:10日,12月:11日},
aa=a.分割(“”),
bb=b.分割(“”);
返回aa[1]-bb[1]|月[aa[0]]-月[bb[0]];
});

document.write(“”+JSON.stringify(月、0、4)+“”)“我正在填充一个数组”->填充时,数据是否已经以这些字符串的形式存在,或者此时您是否可以访问其他形式的数据(例如实际日期对象)?使用foreach和键值对、、、拆分值..首先根据数字(即年份)排列,然后创建自己的数组,如1=>January,2=>二月,3=>三月等等。。。使用此数组根据月份进行排序(当您已经有了针对年份的排序数组时),年份是否与所需的排序顺序有任何关系?是,@Xotic750。它有