fork download
  1. class Klasemen {
  2. constructor(klubList) {
  3. // Inisialisasi klub dengan point 0
  4. this.klubData = {};
  5. klubList.forEach(klub => {
  6. this.klubData[klub] = 0;
  7. });
  8. }
  9.  
  10. catatPermainan(klubKandang, klubTandang, skor) {
  11. // Parsing skor
  12. const [skorKandang, skorTandang] = skor.split(':').map(Number);
  13.  
  14. if (skorKandang > skorTandang) {
  15. this.klubData[klubKandang] += 3;
  16. } else if (skorKandang < skorTandang) {
  17. this.klubData[klubTandang] += 3;
  18. } else {
  19. this.klubData[klubKandang] += 1;
  20. this.klubData[klubTandang] += 1;
  21. }
  22. }
  23.  
  24. cetakKlasemen() {
  25. console.log(this.ambilSemuaPeringkat());
  26. }
  27.  
  28. ambilSemuaPeringkat() {
  29. // Mengurutkan berdasarkan point tertinggi
  30. const sorted = Object.entries(this.klubData)
  31. .sort((a, b) => b[1] - a[1]);
  32.  
  33. // Mengubah kembali menjadi object atau array key-value
  34. const result = {};
  35. for (let [klub, point] of sorted) {
  36. result[klub] = point;
  37. }
  38. return result;
  39. }
  40.  
  41. ambilPeringkat(n) {
  42. const sorted = Object.entries(this.klubData)
  43. .sort((a, b) => b[1] - a[1]);
  44.  
  45. // Peringkat ke-n artinya index ke-n-1
  46. return sorted[n - 1][0];
  47. }
  48. }
  49.  
  50. // Main function (di terminal / runtime)
  51. const klasemen = new Klasemen(['Liverpool', 'Chelsea', 'Arsenal']);
  52.  
  53. klasemen.catatPermainan('Arsenal', 'Liverpool', '2:1');
  54. klasemen.catatPermainan('Arsenal', 'Chelsea', '1:1');
  55. klasemen.catatPermainan('Chelsea', 'Arsenal', '0:3');
  56. klasemen.catatPermainan('Chelsea', 'Liverpool', '3:2');
  57. klasemen.catatPermainan('Liverpool', 'Arsenal', '2:2');
  58. klasemen.catatPermainan('Liverpool', 'Chelsea', '0:0');
  59.  
  60. // Cetak hasil akhir klasemen
  61. klasemen.cetakKlasemen(); // {'Arsenal': 8, 'Chelsea': 5, 'Liverpool': 2}
  62.  
  63. // Ambil peringkat ke-2
  64. console.log(klasemen.ambilPeringkat(2)); // 'Chelsea'
  65.  
Success #stdin #stdout 0.03s 17696KB
stdin
Standard input is empty
stdout
[object Object]
Chelsea