Фильтровать дату в объекте - PullRequest
0 голосов
/ 05 ноября 2019

Имею:

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'}]

Как получить:

24, 27, 30 мая 2019

01, 02, 05, 07 июня 2019 года

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Пожалуйста, попробуйте следующий код.

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));
0 голосов
/ 05 ноября 2019

Вы также можете использовать карту и уменьшить вместо циклов для этого:

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','May','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}`)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...