Latihan buat 05 Fungsi Tingkat Tinggi. Konsep: reduce, map, filter, some, dan menulis fungsi yang menerima fungsi lain. Jawaban di 05 Kunci Jawaban Fungsi Tingkat Tinggi.

5.1 Meratakan

Pakai reduce bersama concat untuk “meratakan” array berisi array jadi satu array dengan semua elemennya.

Kode awal:

let arrays = [[1, 2, 3], [4, 5], [6]];
// tulis kodemu di sini
// → [1, 2, 3, 4, 5, 6]

Petunjuk: nilai awal reduce adalah [], dan tiap langkah gabungkan array sekarang dengan concat. Konsep di 05 Fungsi Tingkat Tinggi > Merangkum dengan reduce.

→ Jawaban: 05 Kunci Jawaban Fungsi Tingkat Tinggi > 5.1 Meratakan

5.2 Loop Sendiri

Tulis fungsi tingkat tinggi loop(value, test, update, body) yang meniru for. Tiap putaran: jalankan test(value), berhenti kalau false; kalau tidak, panggil body(value), lalu hitung value baru dengan update(value).

Kode awal:

// tulis kodemu di sini
 
loop(3, n => n > 0, n => n - 1, console.log);
// → 3
// → 2
// → 1

Petunjuk: di dalam fungsinya kamu boleh pakai for/while biasa; ketiga fungsi itu tinggal dipetakan ke init/cek/update. Konsep di 05 Fungsi Tingkat Tinggi > Fungsi Tingkat Tinggi.

→ Jawaban: 05 Kunci Jawaban Fungsi Tingkat Tinggi > 5.2 Loop Sendiri

5.3 Every

Array punya some (benar kalau ada yang cocok). Buat pasangannya, every(array, test), yang benar kalau semua elemen cocok. Tulis dua versi: satu pakai loop, satu pakai some.

Kode awal:

function every(array, test) {
  // tulis kodemu di sini
}
 
console.log(every([1, 3, 5], n => n < 10));
// → true
console.log(every([2, 4, 16], n => n < 10));
// → false
console.log(every([], n => n < 10));
// → true

Petunjuk: versi loop bisa return false begitu ketemu satu yang gak cocok, dan return true kalau selesai tanpa itu. Versi some pakai hukum De Morgan: “semua cocok” = “tidak ada yang tidak cocok” → !array.some(x => !test(x)).

→ Jawaban: 05 Kunci Jawaban Fungsi Tingkat Tinggi > 5.3 Every

5.4 Arah Tulisan Dominan

Tiap objek skrip Unicode punya direction ("ltr", "rtl", atau "ttb"). Tulis dominantDirection(text) yang mengembalikan arah mayoritas karakter yang punya skrip. (Butuh characterScript dan countBy dari bab; kunci jawaban menyertakan versi mini + data contoh biar bisa dijalankan.)

Kode awal:

function dominantDirection(text) {
  // tulis kodemu di sini
}
 
console.log(dominantDirection("Hello!"));
// → ltr
console.log(dominantDirection("Hey, مساء الخير"));
// → rtl

Petunjuk: mirip separuh pertama textScripts di bab: hitung karakter berdasarkan direction dengan countBy, saring yang "none", lalu pakai reduce untuk menemukan hitungan tertinggi. Konsep di 05 Fungsi Tingkat Tinggi > Mengenali Teks.

→ Jawaban: 05 Kunci Jawaban Fungsi Tingkat Tinggi > 5.4 Arah Tulisan Dominan