7
votes

Trier un tableau multidimensionnel dans JavaScript

Comment trier un tableau multidimensionnel dans JavaScript?

J'ai une matrice pleine de tableaux contenant deux dates et une chaîne. J'ai besoin de la matrice principale triée par l'une des tableaux de date, est-ce possible? P>

Structure de données: P>

events = [
 { date 1, date 2, string },
 { date 2, date 2, string },
 ]


0 commentaires

3 Réponses :


5
votes

La structure de la matrice semble un peu vague de votre description. Vous pouvez utiliser une fonction de tri personnalisée pour comparer des éléments et faire le tri.

supposer que la structure est la suivante: p> xxx pré>

si vous aviez des objets à la place de tableaux imbriqués, vous ne seriez pas t besoin d'utiliser des index numériques. Ici, a [0] code> et B [0] code> permet de comparer le premier élément en deux tableaux imbriqués (en supposant que la date à laquelle vous souhaitez trier). En outre, en supposant que A [0] et B [0] sont déjà des objets de date - vous devrez peut-être créer les objets de date si elles ne sont pas déjà. P>

Mise à jour forte>: Merci à @maerics pour le remarquer. La valeur de retour du comparateur doit être [négative, 0, positive] correspondant aux valeurs [A B]. P>

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

data.sort(sortByDate);


2 commentaires

Vous voulez probablement dire renvoyer un [0] .gettime () - b [0] .bettime () car le comparateur doit revenir (Neg, zéro, POS) en fonction de si (A B), non?


Aucun point dans l'utilisation de Gettime (). A - B aboutira à A.Valueof () et à B.Valueof () utilisée dans les coulisses, qui renvoie le temps UNIX



1
votes

Cet exemple est destiné aux tableaux de tri par chiffres (et dates) ou des chaînes.

a.deepsort(0);
a.deepsort(2);


1 commentaires

Fonctionne bien en chrome. 'this.sort' jette une erreur dans Firefox.



19
votes

duplicata de Triez la matrice extérieure basée sur des valeurs dans Array intérieure, JavaScript Ici vous trouverez plusieurs réponses, comme mon propre xxx

ce genre sur Index 2


2 commentaires

+1 Je sais que c'est un vieux post mais c'est une réponse géniale et cela m'a aidé à craquer un problème avec mon plugin de tri de table personnalisé que je fais :)


Comment se fait-il que Javascript a fait le faire être compliqué en rendant le retour de l'utilisateur 1, 0 ou -1. Au lieu de cela, pourquoi ne pas le faire comme Python où son juste arr.sort ((A, B) => A [0]