Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对充满对象的数组进行排序,每个对象都包含月-年格式的日期属性?_Javascript_Sorting_Date - Fatal编程技术网

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;}