Tantangan JavaScript

Uji pemahamanmu dengan soal-soal interaktif. Tulis kode, jalankan, dan cek hasilnya langsung di browser.

Progress0/135 solved
Pemula: 0/50Menengah: 0/40Lanjutan: 0/45
Menampilkan 1-20 dari 135 soal

Ganjil atau Genap

pemulaPercabangan

Buat fungsi `ganjilGenap(n)` yang menerima sebuah angka dan mengembalikan string "ganjil" jika angka tersebut ganjil, atau "genap" jika genap.

Test cases:

ganjilGenap(4)→"genap"
ganjilGenap(7)→"ganjil"
ganjilGenap(0)→"genap"

Balik String

pemulaString

Buat fungsi `balikString(str)` yang menerima sebuah string dan mengembalikan string tersebut dalam urutan terbalik.

Test cases:

balikString("halo")→"olah"
balikString("javascript")→"tpircsavaj"
balikString("abc")→"cba"

FizzBuzz

pemulaLoop

Buat fungsi `fizzBuzz(n)` yang mengembalikan array dari 1 sampai n. Untuk kelipatan 3, ganti dengan "Fizz". Untuk kelipatan 5, ganti dengan "Buzz". Untuk kelipatan keduanya, ganti dengan "FizzBuzz".

Test cases:

fizzBuzz(5)→[1, 2, "Fizz", 4, "Buzz"]
fizzBuzz(15)→[1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz", 11, "Fizz", 13, 14, "FizzBuzz"]
fizzBuzz(3)→[1, 2, "Fizz"]

Cari Nilai Terbesar

pemulaArray

Buat fungsi `nilaiTerbesar(arr)` yang menerima array angka dan mengembalikan nilai terbesar tanpa menggunakan Math.max.

Test cases:

nilaiTerbesar([3, 7, 2, 9, 1])→9
nilaiTerbesar([10, 5, 8])→10
nilaiTerbesar([-1, -5, -2])→-1

Hitung Kata

pemulaString

Buat fungsi `hitungKata(str)` yang menghitung jumlah kata dalam sebuah string. Fungsi harus menangani spasi ganda dengan benar.

Test cases:

hitungKata("saya belajar javascript")→3
hitungKata("hello world")→2
hitungKata("")→0

Palindrome Check

pemulaString

Buat fungsi `cekPalindrome(str)` yang mengecek apakah sebuah string adalah palindrome (dibaca sama dari depan dan belakang). Pengecekan harus case-insensitive.

Test cases:

cekPalindrome("Katak")→true
cekPalindrome("javascript")→false
cekPalindrome("Level")→true

Jumlah Array

pemulaArray

Buat fungsi `jumlahArray(arr)` yang menerima array angka dan mengembalikan total penjumlahan semua elemen.

Test cases:

jumlahArray([1, 2, 3, 4, 5])→15
jumlahArray([10, -2, 3])→11
jumlahArray([0, 0, 0])→0

Huruf Kapital Pertama

pemulaString

Buat fungsi `kapitalPertama(str)` yang mengubah huruf pertama setiap kata menjadi huruf kapital.

Test cases:

kapitalPertama("halo dunia")→"Halo Dunia"
kapitalPertama("belajar javascript itu seru")→"Belajar Javascript Itu Seru"
kapitalPertama("satu")→"Satu"

Hitung Vokal

pemulaString

Buat fungsi `hitungVokal(str)` yang menghitung jumlah huruf vokal (a, i, u, e, o) dalam sebuah string. Pengecekan case-insensitive.

Test cases:

hitungVokal("javascript")→3
hitungVokal("AIUEO")→5
hitungVokal("bcd")→0

Faktorial

pemulaFungsi

Buat fungsi `faktorial(n)` yang menghitung faktorial dari bilangan n. Faktorial 0 adalah 1.

Test cases:

faktorial(5)→120
faktorial(0)→1
faktorial(3)→6

Hapus Duplikat

pemulaArray

Buat fungsi `hapusDuplikat(arr)` yang mengembalikan array baru tanpa elemen duplikat.

Test cases:

hapusDuplikat([1, 2, 2, 3, 3, 4])→[1, 2, 3, 4]
hapusDuplikat([5, 5, 5])→[5]
hapusDuplikat([1, 2, 3])→[1, 2, 3]

Celsius ke Fahrenheit

pemulaNumber

Buat fungsi `celsiusKeFahrenheit(celsius)` yang mengkonversi suhu dari Celsius ke Fahrenheit. Rumus: F = (C * 9/5) + 32.

Test cases:

celsiusKeFahrenheit(0)→32
celsiusKeFahrenheit(100)→212
celsiusKeFahrenheit(37)→98.6

Cek Angka Prima

pemulaPercabangan

Buat fungsi `cekPrima(n)` yang mengembalikan true jika n adalah bilangan prima, dan false jika bukan.

Test cases:

cekPrima(7)→true
cekPrima(4)→false
cekPrima(1)→false

Rata-rata Array

pemulaArray

Buat fungsi `rataRata(arr)` yang menghitung rata-rata dari semua elemen dalam array angka.

Test cases:

rataRata([2, 4, 6])→4
rataRata([10, 20, 30, 40])→25
rataRata([1, 1, 1])→1

Fibonacci ke-N

pemulaLoop

Buat fungsi `fibonacci(n)` yang mengembalikan bilangan Fibonacci ke-n. Fibonacci dimulai dari 0, 1, 1, 2, 3, 5, ... (index dimulai dari 0).

Test cases:

fibonacci(6)→8
fibonacci(0)→0
fibonacci(10)→55

Cek Anagram

pemulaString

Buat fungsi `cekAnagram(str1, str2)` yang mengecek apakah dua string adalah anagram (memiliki huruf yang sama dengan jumlah yang sama). Case-insensitive.

Test cases:

cekAnagram("listen", "silent")→true
cekAnagram("hello", "world")→false
cekAnagram("Tiga", "gait")→true

Hitung Kemunculan

pemulaArray

Buat fungsi `hitungKemunculan(arr, target)` yang menghitung berapa kali target muncul dalam array.

Test cases:

hitungKemunculan([1, 2, 3, 2, 2, 4], 2)→3
hitungKemunculan(["a", "b", "a"], "a")→2
hitungKemunculan([1, 2, 3], 5)→0

Truncate String

pemulaString

Buat fungsi `truncateString(str, maxLength)` yang memotong string jika lebih panjang dari maxLength dan menambahkan "..." di akhir. Jika string lebih pendek atau sama, kembalikan apa adanya.

Test cases:

truncateString("Halo dunia JavaScript", 10)→"Halo dunia..."
truncateString("Hi", 5)→"Hi"
truncateString("abcdef", 3)→"abc..."

Array ke Object

pemulaObject

Buat fungsi `arrayKeObject(arr)` yang menerima array pasangan [key, value] dan mengembalikan object. Contoh: [["nama", "Budi"], ["umur", 20]] menjadi {nama: "Budi", umur: 20}.

Test cases:

arrayKeObject([["nama", "Budi"], ["umur", 20]])→{"nama": "Budi", "umur": 20}
arrayKeObject([["a", 1], ["b", 2]])→{"a": 1, "b": 2}
arrayKeObject([["x", true]])→{"x": true}

Cek Tahun Kabisat

pemulaPercabangan

Buat fungsi `tahunKabisat(tahun)` yang mengembalikan true jika tahun tersebut adalah tahun kabisat. Aturan: habis dibagi 4, kecuali habis dibagi 100 (bukan kabisat), kecuali habis dibagi 400 (kabisat).

Test cases:

tahunKabisat(2000)→true
tahunKabisat(1900)→false
tahunKabisat(2024)→true

135 tantangan dari pemula sampai lanjutan. Setiap bab juga punya challenge di akhir sub-topik — cek di halaman Belajar.