Вы можете сделать это с дополнительным параметром, т.е.
const projects = [{
name: "c",
date: new Date("2020/01/02"),
}, {
name: "b",
date: new Date("2020/12/12"),
}, {
name: "a",
date: new Date("2020/06/06"),
}]
const sortIt = sortBy => (a, b) => {
if (a[sortBy] > b[sortBy]) {
return 1;
} else if (a[sortBy] < b[sortBy]) {
return -1;
}
return 0;
}
const sortedByDate = projects.sort(sortIt('date'));
const sortedByName = projects.sort(sortIt('name'));
console.log(sortedByDate);
console.log(sortedByName);
И таким образом вы открыты для вывода любого свойства в объекте первого уровня и фильтрации по его строковому значению.
Или в одну строку
const sortIt = sortBy => (a, b) => a[sortBy] > b[sortBy] ? 1 : a[sortBy] < b[sortBy] ? -1 : 0;