Menemukan Kata Terpanjang di JavaScript dengan longestWord
Oke, jadi kali ini aku mau sharing tentang sebuah fungsi simpel tapi cukup menarik yang aku temui waktu belajar JavaScript dan aku menemukan ini di codewars. Nama fungsinya adalah longestWord
. Seperti namanya, fungsi ini bakal mencari dan mengembalikan kata terpanjang dari sebuah string.
Aku akan jelaskan kenapa fungsi ini bisa jalan, metode-metode apa aja yang dipakai, dan alasannya. Yuk, langsung aja ke penjelasan detailnya!
Tujuan Fungsi longestWord
Fungsi ini tugasnya simpel: menerima input berupa string yang berisi beberapa kata (dipisahkan spasi), lalu mengembalikan kata terpanjang. Kalau ternyata ada lebih dari satu kata dengan panjang yang sama, fungsi ini bakal ambil kata terakhir yang ditemukan.
Contohnya kayak gini:
longestWord("Aku sedang belajar JavaScript yang menyenangkan");
// Output: "menyenangkan"
longestWord("red blue gold");
// Output: "gold"
Kode Fungsinya
Ini kodenya, pendek banget, tapi kerennya di balik layar ada banyak hal yang terjadi:
function longestWord(stringOfWords) {
return stringOfWords
.split(' ') // Pecah string jadi array kata-kata
.sort((a, b) => a.length - b.length) // Urutkan berdasarkan panjang
.slice(-1) // Ambil elemen terakhir (kata terpanjang)
.toString(); // Ubah jadi string lagi
}
Penjelasan Teknis
1. Memisahkan String Jadi Array Kata: .split(' ')
Pertama, string yang dimasukkan dipecah jadi array kata-kata dengan metode split(' ')
. Jadi spasi di string itu kayak pemisah antar kata.
Misalnya:
"Aku sedang belajar".split(' ');
// Output: ["Aku", "sedang", "belajar"]
Ini penting karena kita nggak bisa langsung manipulasi string kayak array. Dengan split, tiap kata jadi elemen array yang gampang banget dikelola.
2. Mengurutkan Kata Berdasarkan Panjang: .sort((a, b) => a.length - b.length)
Setelah jadi array, kita urutkan kata-kata itu dari yang terpendek sampai terpanjang pakai metode sort
.
Di dalam sort
, aku kasih callback (a, b) => a.length - b.length
. Intinya, aku minta JavaScript ngurutkan elemen array berdasarkan panjangnya.
Hasilnya?
["Aku", "sedang", "belajar"].sort((a, b) => a.length - b.length);
// Output: ["Aku", "sedang", "belajar"]
3. Ambil Kata Terpanjang: .slice(-1)
Karena array sudah diurutkan, kata paling panjang pasti ada di ujung array. Nah, slice(-1)
fungsinya buat ambil elemen terakhir.
Contohnya kayak gini:
["Aku", "sedang", "belajar"].slice(-1);
// Output: ["belajar"]
4. Ubah Lagi Jadi String: .toString()
Hasil dari slice(-1)
itu sebenarnya masih berbentuk array, walaupun isinya cuma satu elemen. Supaya sesuai dengan output yang diminta, kita ubah lagi jadi string pakai toString()
.
Hasil akhirnya:
["belajar"].toString();
// Output: "belajar"
Kenapa Pakai Metode-Metode Ini?
-
split(' ')
: Karena string itu sifatnya immutable (nggak bisa diubah langsung), aku pecah dulu jadi array biar gampang diolah. -
sort()
: Cara tercepat buat cari elemen terbesar atau terpanjang adalah dengan ngurutkan dulu datanya. -
slice(-1)
: Ini trik simple buat langsung ambil elemen terakhir dari array. -
toString()
: Karena output akhirnya harus berbentuk string, ini step terakhirnya.
Buat aku, fungsi longestWord
ini kayak latihan yang bagus buat ngingetin beberapa metode penting di JavaScript, terutama buat kerja dengan string dan array. Dari fungsi ini, aku juga jadi makin paham gimana cara kerja split
, sort
, slice
dan toString
.
Kalau kamu ada ide lain buat nyelesain masalah ini, atau mungkin mau optimasi lebih lanjut, yuk diskusi bareng di kolom komentar! ๐
Top comments (0)