2016-04-27 1 views
1

Wie kann man wissen, wie oft das gleiche Objekt in Array erscheint? ich überprüfen möchten, wie oft ich das Objekt gefunden, wie:Ruby on Rails - Wie kann das gleiche Objekt in Array mit Active Record angezeigt werden?

array = ['A','A','A','B','B','C','C','C','D'] 

So, A erschien dreimal, B zweimal, drei C zu, und nur eine für D.

Ich weiß, dass, wenn ich benutze "find_all", wie:

array.find_all{ |e| array.count(e) > 1 } 

ich mit Antwort

["A", "A", "A", "B", "B", "C", "C", "C"] 

bekommen, aber, wie ich kann, Zählen Sie das? Ich möchte so etwas wie:

A = 3, B = 2, C = 3, D = 1. 

Antwort

1

Sie auf dem Array injizieren kann über das Array zu durchlaufen und einen Hash in jede Iteration zum Speichern von Daten übergeben. So um die Zählung des Arrays abrufen Sie gaben Sie dies tun würde:

array = ["A", "A", "A", "B", "B", "C", "C", "C"] 
array.inject(Hash.new(0)) do |hash, array_item| 
    hash[array_item] += 1 
    hash # this will be passed into the next iteration as the hash parameter 
end 

=> {"A"=>3, "B"=>2, "C"=>3} 

in Hash.new(0) Passing statt {} bedeutet, dass der Standardwert für jede Taste, wenn Sie es zuerst 0.

+1

Lockyy sein begegnen , Danke vielmals! Das funktioniert sehr gut! –

Verwandte Themen