Urutkan berdasarkan field
Kita memiliki array objek untuk diurutkan:
let users = [
{ name: "John", age: 20, surname: "Johnson" },
{ name: "Pete", age: 18, surname: "Peterson" },
{ name: "Ann", age: 19, surname: "Hathaway" }
];
Cara yang biasa dilakukan yaitu:
// berdasarkan name (Ann, John, Pete)
users.sort((a, b) => a.name > b.name ? 1 : -1);
// berdasarkan age (Pete, Ann, John)
users.sort((a, b) => a.age > b.age ? 1 : -1);
Apakah kita dapat membuatnya lebih ringkas, seperti ini?
users.sort(byField('name'));
users.sort(byField('age'));
Jadi, daripada menulis sebuah fungsi, cukup tulis byField(fieldName)
.
Tulislah fungsi byField
yang dapat digunakan untuk itu.
function byField(fieldName){
return (a, b) => a[fieldName] > b[fieldName] ? 1 : -1;
}