Cara bermain Kasir Intl
- Baca instruksi level. Tiap baris struk berisi satu data, teks yang diminta, dan hasil fungsimu.
- Tulis isi fungsi
cetak(). Variabel sepertihargaatauwaktusudah tersedia, dan fungsimu dijalankan sekali untuk tiap baris. - Struk berubah setiap kamu mengetik. Baris yang cocok diberi centang hijau.
- Tekan Cek jawaban atau Ctrl + Enter. Semua baris harus cocok, jadi teks yang ditulis langsung tidak cukup.
- 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
toLocaleString()
Cara tercepat memberi pemisah ribuan sesuai bahasa, mis.
150.000untukid-ID. - Level 2
Intl.NumberFormat style currency
Simbol mata uang, posisi tanda minus, dan jumlah desimal diatur oleh locale dan kode mata uang.
- Level 3
Locale en-US
Format yang sama untuk pembeli lain cukup ganti locale: koma untuk ribuan, titik untuk sen.
- Level 4
style percent
Mengubah pecahan
0.15jadi15%tanpa mengalikan 100 sendiri. - Level 5
notation compact
Meringkas angka besar jadi
1,2 jtatau15 rb. - Level 6
Intl.DateTimeFormat dan timeZone
Mencetak tanggal dan jam menurut zona waktu yang kamu tentukan, bukan zona komputer.
- Level 7
timeZoneName
Menambahkan singkatan zona seperti WIB, WITA, dan WIT.
- Level 8
Intl.RelativeTimeFormat
Selisih waktu jadi kalimat seperti
3 hari yang laluataukemarin. - Level 9
Intl.ListFormat
Menggabungkan daftar dengan koma dan
dansesuai aturan bahasa. - Level 10
Intl.PluralRules ordinal
Memilih akhiran urutan bahasa Inggris:
1st,2nd,3rd,11th.
Jangan rangkai format dengan toFixed dan replace
"Rp " + harga.toFixed(0).replace(...) terlihat beres sampai datanya berubah. Refund -5000 jadi Rp -5.000, padahal yang lazim -Rp 5.000. 0.07 * 100 jadi 7.000000000000001, dan pembeli dari Amerika butuh koma untuk ribuan, bukan titik.
Intl.NumberFormat dan kawan-kawannya menyimpan aturan itu per bahasa dan wilayah. Kamu cukup memilih locale, mata uang, dan zona waktu. Cara browser menulis spasi bisa berbeda (spasi biasa atau spasi yang tidak boleh dipisah baris), jadi bandingkan hasil format dengan hasil format juga, bukan dengan teks yang kamu ketik sendiri.
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 teks yang diminta sedikit berbeda di browser lain?
Aturan format datang dari data CLDR yang dibawa tiap browser. Versi yang berbeda bisa menulis 4 November atau 04 November, dan memakai spasi biasa atau spasi tak terpisah. Karena itu teks yang diminta dihitung di browsermu sendiri, dengan kode yang sama seperti kode pemain.
Kenapa harus menulis timeZone?
Objek Date menyimpan satu titik waktu dalam UTC. Tanpa timeZone, Intl.DateTimeFormat memakai zona waktu komputer yang menjalankan kode, jadi struk yang dicetak di server luar negeri bisa salah tanggal.
Apakah Intl bisa dipakai di Node.js?
Bisa. Node.js membawa data ICU lengkap sejak versi 13, jadi kode dari game ini jalan juga di server, misalnya untuk membuat struk PDF atau email.