web-dev-qa-db-fra.com

Javascript: trier un tableau multidimensionnel

Après avoir créé un tableau multi-dim comme celui-ci, comment le trier?

En supposant que des "marqueurs" sont déjà définis:

var location = [];
for (var i = 0; i < markers.length; i++) {
  location[i] = {};
  location[i]["distance"] = "5";
  location[i]["name"] = "foo";
  location[i]["detail"] = "something";
}

Pour l'exemple ci-dessus, je dois le trier par "distance". J'ai vu d'autres questions sur le tri des tableaux et des tableaux multi-dim, mais aucun ne semble fonctionner pour cela.

28
Jeff
location.sort(function(a,b) {

  // assuming distance is always a valid integer
  return parseInt(a.distance,10) - parseInt(b.distance,10);

});

la méthode array.sort de javascript a un paramètre facultatif, qui est une référence de fonction pour une comparaison personnalisée. les valeurs de retour sont >0 signifiant b en premier, 0 signifiant a et b sont égales, et <0 signifiant a d'abord.

45
lincolnk

Avez-vous essayé cela?

location.sort(function(a,b) {
    return a.distance - b.distance;
});
10
user113716

Les deux fonctions de tri publiées jusqu'à présent devraient fonctionner, mais votre problème principal sera d'utiliser location comme variable car elle est déjà définie par le système.

1
Gus