120 votes

Comment trier un tableau à 2 dimensions par valeur de colonne ?

Quelqu'un peut-il m'aider à trier un tableau à 2 dimensions en JavaScript ?

Il contiendra des données au format suivant :

[12, AAA]
[58, BBB]
[28, CCC]
[18, DDD]

Il devrait ressembler à ceci une fois trié :

[12, AAA]
[18, DDD]
[28, CCC]
[58, BBB]

Donc, en gros, trier par la première colonne.

Cheers

0voto

olamotte Points 576

Comme mon cas d'utilisation implique des dizaines de colonnes, j'ai étendu un peu la réponse de @jahroy. (Je viens aussi de réaliser que @charles-clayton a eu la même idée).
Je passe le paramètre par lequel je veux trier, et la fonction de tri est redéfinie avec l'index souhaité pour la comparaison.

var ID_COLUMN=0
var URL_COLUMN=1

findings.sort(compareByColumnIndex(URL_COLUMN))

function compareByColumnIndex(index) {
  return function(a,b){
    if (a[index] === b[index]) {
        return 0;
    }
    else {
        return (a[index] < b[index]) ? -1 : 1;
    }
  }
}

0voto

Bonne idée Sabbir Ahmed, mais ne commandez que par le premier caractère, pour trois :

array.sort((a, b) => (a[n].charCodeAt(0)*1000000 + a[n].charCodeAt(1)*1000 + a[n].charCodeAt(2)) - (b[n].charCodeAt(0)*1000000 + b[n].charCodeAt(1)*1000 + b[n].charCodeAt(2)));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X