Quiero ordenar por orden ascendente y descendente de la matriz de objetos a continuación usando javascript o lodash. Las condiciones son las siguientes:
Estos son los datos.
var data = [ { id: 1, age: 36, name: 'ram', number: 11}, { id: 2, age: 40, name: 'sam', number: 11 }, { id: 3, age: 37, name: 'roy', number: 11 }, { id: 1, age: 41, name: 'fil', number: 12 }, { id: 2, age: 43, name: 'joy', number: 12 }, { id: 3, age: 46, name: 'john', number: 12 } ]
Salida esperada al ordenar según el nombre cuando id='1' y en orden ascendente:
[12,11]
Salida esperada al ordenar según el nombre cuando id = '2' y en orden descendente:
[11,12]
Necesitas dividir tu problema:
filter
la matriz en id === x
;sort
la matriz resultante;map
los valores resultantes para que solo extraiga el number
: var data = [ { id: 1, age: 36, name: 'ram', number: 11}, { id: 2, age: 40, name: 'sam', number: 11 }, { id: 3, age: 37, name: 'roy', number: 11 }, { id: 1, age: 41, name: 'fil', number: 12 }, { id: 2, age: 43, name: 'joy', number: 12 }, { id: 3, age: 46, name: 'john', number: 12 } ] const id = 1; const result = data .filter(row => row.id === id) .sort((a, b) => a.name.localeCompare(b.name)) .map(row => row.number); console.log(result);