-2
votes

Date de filtrage dans l'objet

J'ai: xxx

Comment obtenir:

24, 27, 30 mai 2019

< fort> 01, 02, 05, 07 juin 2019


1 commentaires

S'il vous plaît ajouter le code que vous avez essayé


3 Réponses :


0
votes

Veuillez essayer le code ci-dessous.

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


1 commentaires

Au lieu de si (! Object.keys (finaljson). Enclut (CoururantKey)) {, vous devriez faire si (! Finaljson [courbée]) {



0
votes

Ce ne sera pas joli, car ces dates ne sont pas formatées d'une manière digestible pour un objet de date unie ... pour scinder la scission, c'est le cas:

const monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];
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'}]
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)))

})


1 commentaires

Je suggérerais d'utiliser date.foraach lorsque vous militaient triésMonCollection . Vous ne muterez généralement pas dans la carte RappelBack mais renvoie plutôt une nouvelle valeur.



0
votes

Vous pouvez également utiliser une carte et réduire au lieu de faire des boucles pour le faire:

p>

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


0 commentaires