Latihan 1 dari materi Content Negotiation di Web Fundamentals — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Buat fungsi pickBestMime(acceptHeader, offers) yang memilih format terbaik untuk dikirim server.
acceptHeader adalah isi header Accept, misalnya "text/html, application/xml;q=0.9, */*;q=0.8".
offers adalah array format yang bisa dibuat server, urut dari yang paling disukai server, misalnya ["application/json", "application/xml"].
Langkahnya:
Pecah acceptHeader di tiap koma. Tiap bagian berisi format jenis/subjenis, kadang diikuti ;q=angka. Tanpa q, nilainya 1.
Untuk tiap format di offers, cari bagian Accept yang cocok: tulisannya sama persis, atau jenis/* dengan jenis yang sama, atau */*. Ambil nilai q paling tinggi dari bagian yang cocok. Gak ada yang cocok berarti 0.
Kembalikan format dengan nilai paling tinggi. Kalau seri, pilih yang lebih dulu muncul di offers.
Kalau semua nilainya 0 (gak ada yang cocok, atau ditolak dengan q=0), kembalikan null.
Empat baris console.log di starter sudah memanggil fungsinya, jangan diubah. Kalau fungsinya benar, console mencetak:
Kerjakan dua tahap: ubah header jadi daftar bagian { type, subtype, q }, lalu beri nilai tiap format di offers dan simpan yang paling tinggi.
split(",") memecah header, trim() membuang spasi, split(";") memisahkan format dari q=, dan parseFloat mengubah "0.9" jadi angka. Bagian cocok kalau type dan subtype-nya sama, kalau subtype-nya *, atau kalau dua-duanya *.
let terbaik = null; let qTerbaik = 0; for (const offer of offers) { ...hitung q... if (q > qTerbaik) { qTerbaik = q; terbaik = offer; } } return terbaik; Pakai > (bukan >=) supaya format yang lebih dulu di offers menang kalau seri.
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...