Cara bermain Array Pasar
- Baca instruksi level. Method yang perlu kamu pakai disebut di sana.
- Tulis isi fungsi
olah(). Variabeldagangansudah tersedia, begitu juga variabel lain yang tampil di bawah meja. - Hasil
returnkodemu tampil di bawah meja. Barang yang tersaring diredupkan di meja, dan harga yang diubahmapmenampilkan harga lamanya. - Tekan Cek jawaban atau Ctrl + Enter. Kodemu dijalankan di dua lapak dengan dagangan berbeda, jadi menulis jawabannya langsung tidak akan lolos.
- Kalau buntu, buka Petunjuk. Petunjuk pertama mengarahkan, petunjuk terakhir hampir menjawab.
- Level yang sudah selesai tetap tercentang saat kamu kembali dengan browser yang sama.
Yang kamu pelajari
- Level 1
map
Mengubah tiap item jadi nilai baru. Hasilnya array baru yang sama panjang.
- Level 2
Spread objek
{ ...barang, harga }menyalin semua field lalu menimpa yang ditulis sesudahnya. - Level 3
filter
Menyisakan item yang memenuhi syarat.
- Level 4
find
Mengembalikan satu item pertama yang cocok, atau
undefinedkalau tidak ada. - Level 5
some dan every
Menjawab ya atau tidak: ada minimal satu yang cocok, atau semuanya cocok.
- Level 7
includes
Mengecek apakah sebuah nilai ada di array.
- Level 8
reduce
Meringkas array jadi satu nilai, misalnya total, dengan membawa nilai dari item ke item.
- Level 9
sort dengan pembanding
(a, b) => a.harga - b.hargamengurutkan angka dengan benar. Tanpa pembanding, item diurutkan sebagai teks. - Level 10
Chaining
Menyambung method karena tiap method mengembalikan array baru.
- Level 11
toSorted dan immutability
Mengurutkan salinan supaya array aslinya tidak berubah.
- Level 12
flatMap
mapyang hasilnya diratakan satu tingkat, untuk array di dalam array. - Level 13
Object.groupBy
Mengelompokkan item ke objek berdasarkan kunci, misalnya kategori.
sort mengubah array aslinya
map, filter, dan toSorted mengembalikan array baru. sort berbeda: ia mengurutkan array itu sendiri lalu mengembalikan array yang sama. Setelah dagangan.sort(...), semua bagian program yang memakai dagangan melihat urutan baru.
Kalau datanya masih dipakai di tempat lain, misalnya state React atau props, urutkan salinannya: dagangan.toSorted(...) atau [...dagangan].sort(...).
Tanya jawab
Apakah harus daftar akun untuk bermain?
Tidak. Semua level bisa dimainkan tanpa akun. Kemajuanmu disimpan di browser yang kamu pakai, jadi akan hilang kalau data browser dihapus.
Di mana kodeku dijalankan?
Di Web Worker di dalam iframe terpisah, bukan di halaman ini. Kodemu tidak bisa membaca cookie atau data Mahir, dan perulangan yang tidak berhenti dihentikan setelah 1 detik.
Kenapa hasilku benar di meja Bu Sari tapi tetap salah?
Kodemu juga dijalankan di lapak Pak Joko yang dagangannya berbeda. Kalau kamu menulis jawabannya langsung, misalnya return true, hasilnya salah di lapak kedua. Baca nilainya dari dagangan.
Kenapa harga naik 10% hasilnya 5500.000000000001?
Angka desimal di JavaScript disimpan dalam biner, jadi 5000 * 1.1 tidak persis 5500. Game ini menerima selisih sekecil itu. Untuk uang sungguhan, bulatkan hasilnya dengan Math.round sebelum disimpan.
Bisakah memakai for loop?
Bisa. Yang dicek adalah nilai yang kamu return, bukan method yang dipakai. map dan filter membuat kodenya lebih pendek dan mengembalikan array baru, jadi data asli tidak berubah tanpa sengaja.