مرتبسازی براساس حوزه
اهمیت: 5
ما یک ارایه از شیءها را برای مرتبسازی دریافت کردهایم:
let users = [
{ name: "John", age: 20, surname: "Johnson" },
{ name: "Pete", age: 18, surname: "Peterson" },
{ name: "Ann", age: 19, surname: "Hathaway" }
];
راه معمولی برای انجام آن میتواند این باشد:
// (Ann، John، Pete) براساس اسم
users.sort((a, b) => a.name > b.name ? 1 : -1);
// (Pete، Ann، John) براساس سن
users.sort((a, b) => a.age > b.age ? 1 : -1);
آیا میتوانیم آن را کوتاهتر کنیم، مثلا اینگونه؟
users.sort(byField('name'));
users.sort(byField('age'));
پس به جای اینکه یک تابع بنویسیم، فقط byField(fieldName)
را قرار میدهیم.
تابع byField
را بنویسید که میتواند برای این کار استفاده شود.
function byField(fieldName){
return (a, b) => a[fieldName] > b[fieldName] ? 1 : -1;
}