兩個顯而易見的選擇;新陣列或就地。
pry(main)> arr = ["00:04:48.563044", "00:05:29.835918", "00:09:38.622569"];
pry(main)> arr.collect! { |s| ChronicDuration.parse s }
=> [288.563044, 329.835918, 578.622569]
要創建一個新的陣列,在collect
呼叫離開過感嘆號("!"
):
pry(main)> new_arr = arr.collect { |s| ChronicDuration.parse s }
你可能想從一個映射到其他:
pry(main)> h = Hash[arr.collect { |s| [s, ChronicDuration.parse(s)] }]
=> {"00:04:48.563044"=>288.563044,
"00:05:29.835918"=>329.835918,
"00:09:38.622569"=>578.622569}
或者切換鍵/值以便於分類;要麼切換collect
陣列,要麼反轉:
pry(main)> h.invert.keys.sort.each_with_index {|k, i| puts "#{i+1}: #{h[k]}"}
1: 00:04:48.563044
2: 00:05:29.835918
3: 00:09:38.622569