Ordenar las claves de un objeto (JavaScript)

Imaginemos que tenemos el siguiente objeto:

objeto = {
  "atributo": {
    "971": {...},
    "975": {...},
    ...
  }
}

Si queremos ordenar las claves de menor a mayor del sub-objeto «atributo» no hay que hacer nada ya que, por defecto, JavaScript ordena las claves de los objetos en este orden (esto es, ascendentemente).

Pero imaginemos que queremos ordenar las claves de mayor a menor (es decir, descendentemente). En ese caso lo que hay que hacer es trabajar directamente con el array de claves del objeto y ordenarlas según nos interese.

var keys = Object.keys(objeto.atributo);
//El algoritmo de ordenación se tiene que usar sobre el array keys

El prototipo «Array» tiene una función que se llama «reverse» que invierte el orden de los elementos de un array (en nuestro caso, como el array de claves está ordenado de menor a mayor, esto provocará que se ordenen de mayor a menor).

//keys es un array de claves ordenado ascendentemente
var keys = Object.keys(objeto.atributo); 
/*invierte el orden del array (en este caso provocará que empiece 
por el mayor número y acabe por el menor)*/
keys.reverse(); 
/*Y lo que hacemos es recorrer el array de keys en lugar de recorrer 
el objeto en sí mismo.*/
for(var i = 0; i < keys.length; i++){
  var idAtributo = keys[i];
  var atributoActual = objeto.atributo[idAtributo];
  ...
}

En este ejemplo he usado «reverse» sobre el array de claves como «método de ordenación», pero se puede usar el que se desee.

Deja una respuesta