Derse geri dön

Alana göre sıralama

önem: 5

Sıralanacak obje dizisi bulunmaktadır:

let kullanicilar = [
  { ad: "Ahmet", yas: 20, soyad: "Zurnacı" },
  { ad: "Hideo", yas: 18, surname: "Konami" },
  { ad: "Jane", yas: 19, surname: "Hathaway" }
];

Bunu yapmanın en yaygın yolu:

// ad'a göre (Ann, Hideo, Jane)
kullanicilar.sort((a, b) => a.ad > b.ad ? 1 : -1);

// yaşa göre (Hideo, Jane, Ahmet)
kullanicilar.sort((a, b) => a.yas > b.yas ? 1 : -1);

Aşağıdaki şekle çevirmek mümkün mü?

kullaniclar.sort(alanIle('ad'));
kullaniclar.sort(alanIle('yas'));

Böylece fonksiyon yazmak yerine sadece alanIle(alanAdı) yazılabilir.

alanIle fonksiyonunu yazınız.

let kullanicilar = [
  { ad: "Ahmet", yas: 20, soyad: "Zurnacı" },
  { ad: "Hideo", yas: 18, soyad: "Konami" },
  { ad: "Jane", yas: 19, soyad: "Hathaway" }
];

function alanIle(alan) {
  return (a, b) => a[alan] > b[alan] ? 1 : -1;
}

kullanicilar.sort(alanIle('ad'));
kullanicilar.forEach(kullanici => alert(kullanici.ad)); // Ahmet, Hideo, Jane

kullanicilar.sort(alanIle('yas'));
kullanicilar.forEach(kullanici => alert(kullanici.ad)); // Hideo, Jane, Ahmet