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))