javascript sort array of objects
// Handles mix-cased strings and numbers with option for setting order
const sortObjectArray = ({ arr, field, order = 'desc' }) => {
arr.sort(function(a, b) {
const fieldA = typeof a[field] === 'string' ? a[field].toLowerCase() : a[field]
const fieldB = typeof b[field] === 'string' ? b[field].toLowerCase() : b[field]
let result
if (order === 'desc') {
result = fieldA > fieldB ? 1 : -1
} else {
result = fieldA < fieldB ? 1 : -1
}
return result
})
return arr
}
let arr = [
{name: "John", age: 34},
{name: "Peter", age: 54},
{name: "jake", age: 25}
]
let arr2 = sortObjectArray({ arr, field: 'name'})
console.log(arr2)
/*
[
{ age: 25, name: "jake"},
{ age: 34, name: "John" },
{ age: 54, name: "Peter" }
]
*/
let arr3 = sortObjectArray({ arr, field: 'age', order: 'asc' })
console.log(arr3)
/*
[
{ age: 54, name: "Peter" },
{ age: 34, name: "John" },
{ age: 25, name: "jake"}
]
*/