7
votes

Tri des tableaux imbriqués d'objets par date

J'essaie de trier un tableau qui ressemble à ceci:

var dateGroups = [
  [
     {age:32, date: Fri Feb 01 2012 10:54:00 GMT+1100 (EST)}, 
     {age:44, date: Fri Feb 01 2012 11:45:00 GMT+1100 (EST)}, 
  ],
  [
     {age:20, date: Fri Feb 03 2012 14:30:00 GMT+1100 (EST)}, 
     {age:12, date: Fri Feb 03 2012 18:20:00 GMT+1100 (EST)}, 
     {age:18, date: Fri Feb 03 2012 21:43:00 GMT+1100 (EST)}
  ],
  [
     {age:22, date: Fri Feb 05 2012 10:54:00 GMT+1100 (EST)}, 
     {age:22, date: Fri Feb 05 2012 18:22:00 GMT+1100 (EST)},
  ]
]


1 commentaires

Vous pouvez trouver des réponses utiles à ce sujet ici: Trier la matrice d'objet JavaScript par date


4 Réponses :


5
votes

Vous pouvez les trier en passant une fonction de tri personnalisée à array.sort code>.

dateGroups.sort(function(a, b) {
    return b[0].date.getTime() - a[0].date.getTime();
});


0 commentaires

10
votes

Selon la documentation soussecore.js, vous devez simplement écrire votre propre itérateur pour cette cause. Quelque chose comme ceci: xxx


1 commentaires

Pourriez-vous élaborer ce que Underscore.js est? Est-il implémenté dans JS par défaut?



1
votes

Autant que je comprends votre question, vous souhaitez trier les groupes internes afin que les premières dates soient affichées d'abord, puis trier les groupes par leurs premières dates. Cela pourrait être fait comme ceci: p>

var sortedDateGroups = _.chain(dateGroups).map(function(dateGroup) {
  return _.sortBy(dateGroup, function(inner) {
    return inner.date.getTime();
  });
}).sortBy(function(outer) {
  return outer[0].date.getTime();
}).value()


0 commentaires

0
votes

Si vous avez des dates au format à la chaîne, cela a fonctionné pour moi:

yourArray.sort((a, b) => Date.parse(b[3]) - Date.parse(a[3]))


0 commentaires