I want to sort by ascending and descending order of the array of object below using javascript or lodash. The conditions are below:
This is the data.
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 }
]
Expected output when sorting based on name when id='1' and in ascending order:
[12,11]
Expected output when sorting based on name when id='2' and in descending order:
[11,12]
You need to split up your problem:
filter the array on id === x;sort the resulting array;map the resulting values so you only extract the 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);