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)},
]
]
4 Réponses :
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();
});
Selon la documentation soussecore.js, vous devez simplement écrire votre propre itérateur pour cette cause. Quelque chose comme ceci:
Pourriez-vous élaborer ce que Underscore.js code> est? Est-il implémenté dans JS code> par défaut?
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()
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]))
Vous pouvez trouver des réponses utiles à ce sujet ici: Trier la matrice d'objet JavaScript par date b>