fork download
  1. // your code goes here
  2. class Klasemen {
  3. constructor(daftarKlub) {
  4. this.poinklub = {};
  5. for (let klub of daftarKlub) {
  6. this.poinklub[klub] = 0;
  7. }
  8. }
  9. catatPermainan(klubKandang, klubTandang, skor) {
  10. // memisahkan skor menjadi angka
  11. const [skorKandang, skorTandang] = skor.split(":").map(Number);
  12. if (skorKandang > skorTandang) {
  13. // Klub kandang menang
  14. this.poinklub[klubKandang] += 3;
  15. } else if (skorTandang > skorKandang) {
  16. this.poinklub[klubTandang] += 3;
  17. } else {
  18. this.poinklub[klubKandang] += 1;
  19. this.poinklub[klubTandang] += 1;
  20. }
  21. }
  22. cetakKlasemen() {
  23. // Return objek yang berisi klub dan poin, urut dari poin tertinggi
  24. const sorted = Object.entries(this.poinklub)
  25. .sort((a, b) => b[1] - a[1]) // Urut dari tertinggi
  26. .reduce((obj, [klub, poin]) => {
  27. obj[klub] = poin;
  28. return obj;
  29. }, {});
  30. return sorted;
  31. }
  32. ambilPeringkat(nomorPeringkat) {
  33. // urutkan berdasarkan poin, lalu ambil klub di posisi ke-(nomorPeringkat)
  34. const sorted = Object.entries(this.poinklub).sort((a, b) => b[1]);
  35. if (nomorPeringkat < 1 || nomorPeringkat > sorted.length) {
  36. return null;
  37. }
  38. return sorted[nomorPeringkat - 1][0]; // Mengambil Nama klub
  39. }
  40. }
  41.  
  42. const klasemen = new Klasemen(["Liverpool", "Chelsea", "Arsenal"]);
  43.  
  44. klasemen.catatPermainan("Arsenal", "Liverpool", "2:1");
  45. klasemen.catatPermainan("Arsenal", "Chelsea", "1:1");
  46. klasemen.catatPermainan("Chelsea", "Arsenal", "0:3");
  47. klasemen.catatPermainan("Chelsea", "Liverpool", "3:2");
  48. klasemen.catatPermainan("Liverpool", "Arsenal", "2:2");
  49. klasemen.catatPermainan("Liverpool", "Chelsea", "0:0");
  50.  
  51. console.log(klasemen.cetakKlasemen());
  52. // Output: { Arsenal: 8, Chelsea: 5, Liverpool: 2 }
  53.  
  54. console.log(klasemen.ambilPeringkat(2));
  55. // Output: Chelsea
  56.  
Success #stdin #stdout 0.03s 17744KB
stdin
Standard input is empty
stdout
[object Object]
Chelsea