我有:
var date = [{date: '24.05.2019'},{date: '27.05.2019'},{date: '30.05.2019'},{date: '01.06.2019'},{date: '02.06.2019'},{date: '05.06.2019'},{date: '07.06.2019'}]
如何获取:
2019年5月24日至27日
2019年6月1日,02、05、07
我有:
var date = [{date: '24.05.2019'},{date: '27.05.2019'},{date: '30.05.2019'},{date: '01.06.2019'},{date: '02.06.2019'},{date: '05.06.2019'},{date: '07.06.2019'}]
如何获取:
2019年5月24日至27日
2019年6月1日,02、05、07
请尝试以下代码。
var formatDate = function(dates) {
var monthMap = [ 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' ];
var tempDateArray = dates.map(d => d.date);
var finalJson = {};
tempDateArray.forEach(d => {
const currentKey = d.substr(3);
if (!Object.keys(finalJson).includes(currentKey)) {
finalJson[currentKey] = [];
}
finalJson[currentKey].push(d.substr(0,2));
});
return Object.keys(finalJson).map(key => {
return finalJson[key].join(',') + ' ' + monthMap[(parseInt(key.substr(0,2)) - 1)] + ' ' + key.substr(3);
});
};
var date = [{date: '24.05.2019'},{date: '27.05.2019'},{date: '30.05.2019'},{date: '01.06.2019'},{date: '02.06.2019'},{date: '05.06.2019'},{date: '07.06.2019'}];
console.log(formatDate(date));
,
这不会很漂亮,因为对于普通的Date对象,这些日期不是以可消化的方式格式化的...所以将其字符串拆分为:
const monthNames = ["January","February","March","April","May","June","July","August","September","October","November","December"
];
var date = [{date: '24.05.2019'},{date:
'07.06.2019'}]
const sortedMonthCollection = []
monthNames.map(month => sortedMonthCollection.push([month]))
date.map(({ date }) => {
const monthIndex = monthNames[parseInt(date.substr(3,2))-1];
sortedMonthCollection[parseInt(date.substr(3,2))-1].unshift(parseInt(date.substr(0,2)))
})
,
您还可以使用map和reduce代替for循环来做到这一点:
var date = [{ date: '24.05.2019' },{ date: '27.05.2019' },{ date: '30.05.2019' },{ date: '01.06.2019' },{ date: '02.06.2019' },{ date: '05.06.2019' },{ date: '07.06.2019' },{ date: '24.05.2020' }];
var monthNames = ['January','February','March','April','June','July','August','September','October','November','December',];
console.log(
[
...date
.map(d => d.date.split('.').map(Number))
.sort(
(a,b) => a[2] - b[2] || a[1] - b[1] || a[0] - b[0]
)
.reduce(
(result,[d,m,y]) =>
result.set(
`${monthNames[m]} ${y}`,(
result.get(`${monthNames[m]} ${y}`) || []
).concat(d)
),new Map()
)
.entries(),].map(([ym,days]) => `${days.join(',')} ${ym}`)
);