过滤对象中的日期

我有:

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

huzhuangc 回答:过滤对象中的日期

请尝试以下代码。

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

本文链接:https://www.f2er.com/3161620.html

大家都在问