Cómo Ordenar un Array en Javascript

Para ordenar array en javascript debes hacer uso del método sort, el cual está incluido en javascript por defecto.

Para ello, debes restar cada valor (actual, siguiente) y dependiendo del orden de la resta, se ordenará de forma ascendente actual - siguiente o descendente siguiente - actual.

A continuación, te muestro cómo ordenar arrays simples y arrays de objetos o listas de objetos.

Ordenar Array Simple

Para ordenar un array simple solo debes comparar los valores mediante una resta o función específica como lo veremos a continuación.

Array de Números

Está comparación se hace restando los números.

const arr = [1, 3, 2] arr.sort((curr, next) =>curr - next) // [1, 2, 3] arr.sort((curr, next) =>next - curr) // [3, 2, 1]
Array de Números Ordenado de Forma Ascendente y Descendente

Array de Strings (Texto)

En este caso la comparación se hace mediante la función localeCompare de los strings.

const arr = ['a', 'c', 'b'] arr.sort((curr, next) =>curr.localeCompare(next)) // ['a', 'b', 'c'] arr.sort((curr, next) =>next.localeCompare(curr)) // ['c', 'b', 'a']
Array de Strings Ordenado de Forma Ascendente y Descendente

Array de Booleanos (true, false)

En este caso poco usual, debes tener en cuenta que un booleano se caracteriza por ser 1 si es true y 0 si es falso, por lo que la comparación se hace transformando los booleanos a números.

const arr = [true, false, true] arr.sort((curr, next) =>Number(next) - Number(curr)) // [true, true, false] arr.sort((curr, next) =>Number(curr) - Number(next)) // [false, true, true]
Array de Booleanos Ordenado de Forma Ascendente y Descendente

Ordenar Array de Objetos

De igual manera, si quieres ordenar una array de objetos, debes usar sort, pero seleccionando la llave que quieres comparar.

const arr = [ { name: 'Francisco', age: 28, verified: true }, { name: 'Javier', age: 21, verified: false }, { name: 'Fernando', age: 21, verified: false }, ] arr.sort((curr, next) =>curr.name.localeCompare(next.name)) // sorted ascending by 'name' arr.sort((curr, next) =>next.name.localeCompare(curr.name)) // sorted descending by 'name' arr.sort((curr, next) =>curr.age - next.age) // sorted ascending by 'age' arr.sort((curr, next) =>next.age - curr.age) // sorted descending by 'age' arr.sort((curr, next) =>Number(curr.verified) - Number(next.verified)) // sorted ascending by 'verified' arr.sort((curr, next) =>Number(next.verified) - Number(curr.verified)) // sorted descending by 'verified'
Array de Objetos Ordenado de Forma Ascendente y Descendente

Sugerencias

Antes de ordenar un array te recomiendo sacar una copia o clonar el array para usar la versión no ordenada del array si es necesario, debido a que, el método sort modifica el array directamente y no genera un array con el resultado.