Map Dengan Index Pada Array di Ruby
- Last modified atAda kalanya saat membuat form untuk aplikasi web memerlukan select box dimana berisi nama berupa string dan value berupa angka integer dimulai dari angka tertentu.
Pada Ruby hal ini dapat dilakukan dengan menggabungkan method map
dan with_index
seperti berikut.
days = ["minggu", "senin", "selasa", "rabu", "kamis", "jumat", "sabtu"]
days.map.with_index{|day, idx| [day, idx]}
# => [["minggu", 0], ["senin", 1], ["selasa", 2], ["rabu", 3],
# ["kamis", 4], ["jumat", 5], ["sabtu", 6]]
# `with_index` dapat dimulai dari angka apa saja
days = ["minggu", "senin", "selasa", "rabu", "kamis", "jumat", "sabtu"]
days.map.with_index(99){|day, idx| [day, idx]}
#=> [["minggu", 99], ["senin", 100], ["selasa", 101], ["rabu", 102],
# ["kamis", 103], ["jumat", 104], ["sabtu", 105]]
# contoh penggunaan pada form rails
# form ... do |f|
f.select :day, days.map.with_index{|day, idx| [day, idx]}
# ...