Ordenar matrices numéricamente por valor de propiedad de objeto

2 minutos de lectura

avatar de usuario
Harry

¿Cómo ordenaría esta matriz con estos objetos por distancepara que tenga los objetos ordenados desde la distancia más pequeña a la distancia más grande?

[
  { distance: 3388, duration: "6 mins", from: "Lenchen Ave, Centurion 0046, South Africa" },
  { distance: 13564, duration: "12 mins", from: "Lenchen Ave, Centurion 0046, South Africa" },
  { distance: 4046, duration: "6 mins", from: "Lenchen Ave, Centurion 0046, South Africa" },
  { distance: 11970, duration: "17 mins", from: "Lenchen Ave, Centurion 0046, South Africa" }
]

  • El patrón para ordenar por propiedades numéricamente es myarray.sort((a, b) => a.distance - b.distance). Para ordenar lexicográficamente, utilice a.from.localeCompare(b.from). Para ordenar de forma descendente en lugar de ascendente, niega el valor devuelto (p. ej. b.distance - a.distance en vez de a.distance - b.distance). Para ordenar numérico instrumentos de cuerdauso opcional Number. Para ordenar por múltiples propiedades, encadene otras ordenaciones con ||p.ej b.someNumber - a.someNumber || a.someString.localeCompare(b.someString).

    – Sebastián Simón

    10 abr a las 11:49


aquí hay un ejemplo con la respuesta aceptada:

 a = [{name:"alex"},{name:"clex"},{name:"blex"}];

Para ascender:

a.sort((a,b)=> (a.name > b.name ? 1 : -1))

producción : [{name: "alex"}, {name: "blex"},{name: "clex"} ]

Para descender:

a.sort((a,b)=> (a.name < b.name ? 1 : -1))

producción : [{name: "clex"}, {name: "blex"}, {name: "alex"}]

Si tiene nombres en minúsculas y mayúsculas, use toLowerCase() función.
Aquí hay un ejemplo:

data = [{name:"foo"},{name:"Bar"},{name:"Foo"}];


a.sort((a,b)=> (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1))

avatar de usuario
deepak kumar

Empuje todos los objetos en una matriz myArray y luego aplique la clasificación usando esto.

myArray.sort(function(a, b) {
    return a.distance - b.distance;
});

esto funcionó para mí

var files=data.Contents;
          files = files.sort(function(a,b){
        return a.LastModified - b. LastModified;
      });

O use Lodash para ordenar la matriz

files = _.orderBy(files,'LastModified','asc');

  • donde fue LastModified ¿viene de? La propiedad objetivo es distance.

    – Sebastián Simón

    10 abr a las 11:46

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad