Javascript 如何对充满对象的数组进行排序,每个对象都包含月-年格式的日期属性?
我有一个数组,其中包含许多对象,每个对象都有以下格式的日期属性:Javascript 如何对充满对象的数组进行排序,每个对象都包含月-年格式的日期属性?,javascript,sorting,date,Javascript,Sorting,Date,我有一个数组,其中包含许多对象,每个对象都有以下格式的日期属性:{date:'December 2017'}。我想把它们按降序排列。我怎样才能做到这一点 我曾尝试使用一个辅助对象将每个月的名称与其对应的数字绑定,然后将每个月转换为新的日期进行排序。我正在成功地将每个对象转换为新的日期格式,但我不确定如何使用它对原始数组进行排序 let dates = [{ date: 'December 2016' }, { date: 'December 2017' }, { date: 'November
{date:'December 2017'}
。我想把它们按降序排列。我怎样才能做到这一点
我曾尝试使用一个辅助对象将每个月的名称与其对应的数字绑定,然后将每个月转换为新的日期进行排序。我正在成功地将每个对象转换为新的日期格式,但我不确定如何使用它对原始数组进行排序
let dates = [{ date: 'December 2016' }, { date: 'December 2017' }, { date: 'November 2016' }, { date: 'August 2015' }, { date: 'June 2018' }, { date: 'May 2017' }];
let months = { "January": 1, "February": 2, "March": 3, "April": 4, "May": 5, "June": 6, "July": 7, "August": 8, "September": 9, "October": 10, "November": 11, "December": 12 };
let newDates = [];
for (var i = 0; i < dates.length; i++) {
newDates.push(new Date(dates[i].date.replace(' ', ', ')))
}
newDates.sort((a, b) => {
return b - a;
})
let dates=[{date:'2016年12月'},{date:'2017年12月'},{date:'2016年11月'},{date:'2015年8月'},{date:'2018年6月'},{date:'2017年5月'}];
让月份={“一月”:1,“二月”:2,“三月”:3,“四月”:4,“五月”:5,“六月”:6,“七月”:7,“八月”:8,“九月”:9,“十月”:10,“十一月”:11,“十二月”:12};
让newDates=[];
对于(变量i=0;i{
返回b-a;
})
一个简单的开始就是这样做,虽然效率不高,但如果您的阵列不是很大,则应该可以:
let dates = [{ date: 'December 2016' }, { date: 'December 2017' }, { date: 'November
2016' }, { date: 'August 2015' }, { date: 'June 2018' }, { date: 'May 2017' }];
dates.sort((a, b) => {
const dateA = new Date(a.date.replace(' ', ', '));
const dateB = new Date(b.date.replace(' ', ', '));
return dateB - dateA;
});
如果您想经常对大量数据进行排序,我建议您将数组转换为使用数字来表示日期。然后,您可以在需要显示它们时将其格式化为
。您可以获取一个填充的月份值,并在获取日期后按字符串排序
var dates=[{date:'2016年12月'},{date:'2017年12月'},{date:'2016年11月'},{date:'2015年8月'},{date:'2018年6月'},{date:'2017年5月'}],
月份={“一月”:“01”,“二月”:“02”,“三月”:“03”,“四月”:“04”,“五月”:“05”,“六月”:“06”,“七月”:“07”,“八月”:“08”,“九月”:“09”,“十月”:“10”,“十一月”:“11”,“十二月”:“12”};
排序({date:a},{date:b})=>{
const getDate=s=>s.split('').reduce((m,y)=>[y,months[m]])。join('-');
返回getDate(a).localeCompare(getDate(b));
});
控制台日志(日期)代码>
。作为控制台包装{最大高度:100%!重要;顶部:0;}