Meilleure façon de faire la somme des valeurs dans un tableau de hachages
J'ai besoin de la somme des valeurs dans un tableau de hachages et j'ai trouvé un moyen de le faire ici
mais il semble que comme il devrait y avoir une façon plus élégante en Ruby.
Voici ce qui fonctionne;
sales = [{"sale_price"=>210000, "deed_type"=>"Warranty Deed"}, {"sale_price"=>268300, "deed_type"=>"Warranty Deed Joint"}]
total_sales = sales.inject(0) {|sum, hash| sum + hash["sale_price"]}
Les totaux de ligne n'est pas très lisible. Ce serait bien si quelque chose comme cela, travaillé;
total_sales = sales.sum("sale_price")
Est-ce juste un rêve ou suis-je surplombant une meilleure solution?
source d'informationauteur SteveO7
Vous devez vous connecter pour publier un commentaire.
J'ai comme l'utilisation de la carte/la réduction de la métaphore comme suit:
La réduction de la méthode est un synonyme pour l'injecter la méthode, j'ai trouver le nom d'injecter un peu de confusion avec la note de la composante. Il a une autre forme que j'utilise ci-dessus pour prendre la valeur initiale et une référence à un appel de la méthode utilisée pour la combinaison/processus de réduction.
Je pense que l'ensemble de la structure de mappage des valeurs, puis de la réduire à un agrégat est bien connu et documenté.
EDIT: Utiliser le symbole+ à la place de proc &:+
Vous pouvez le faire fonctionner:
Note ce
sum
méthode (sum_by peut-être un meilleur nom) n'est pas défini sur le Tableau, mais seulement sur les ventes de tableau.