Ich habe ein einzelnes Array von Hashes, die ich in 3 separate Arrays basierend auf einem Wert sortieren möchte.Sollte ich .select oder .each verwenden, um Hash-Arrays in 3 separate Arrays zu sortieren? (Ruby)
Es gibt zwei offensichtliche Möglichkeiten, dies zu tun.
arr1 = orig_array.select { |h| h[:category] == 1 }
arr2 = orig_array.select { |h| h[:category] == 2 }
arr3 = orig_array.select { |h| h[:category] == 3 }
oder
arr1 = [], arr2 = [], arr3 = []
arr.each do |h|
if h[:category] == 1
arr1 << h
elsif h[:category] == 2
arr2 << h
elsif h[:category] == 3
arr3 << h
end
end
Zunächst scheint es, wie die zweite Methode, während ausführlichen, wäre mehr performant, weil es nur einmal durch die Original-Array-Schleifen. Ich habe mich jedoch gefragt, ob es im Backend von Ruby einige Optimierungen geben könnte, die die eingebrannte .select-Methode schneller und möglicherweise ressourceneffizienter machen würden, obwohl sie algorithmisch weniger effizient ist.
Irgendwelche Einsichten?