Multisort comparison
by Marco Abate
JavaScript
let arr = [
{
firstname: 'Marco',
lastname: 'Abate',
age: 37
},
{
firstname: 'Marco',
lastname: 'Abate',
age: 36
},
{
firstname: 'Gianpalo',
lastname: 'Abate',
age: 39
},
{
firstname: 'Marco',
lastname: 'Abate',
age: 36
}
]
function multiSort(items, methods) {
const reorderedItems = items.sort((a, b) => {
for (const i in methods) {
const result = methods[i](a, b);
if (result) return result;
};
return 0;
});
return reorderedItems
}
const comparisonMethods = [
(a, b) => a.firstname.localeCompare(b.firstname),
(a, b) => a.lastname.localeCompare(b.lastname),
(a, b) => {
if(a.age > b.age) return -1;
if(a.age < b.age) return 1;
return 0;
}
]
console.log(multiSort(arr, comparisonMethods))