Ich schreibe einen Prozess in Ruby, um Top-Statistiken zu berechnen. Ich habe eine Frage, wie man ein Objekt-Array filtert.Filter auf einem Array von Ruby-Objekten
Angesichts der folgenden Objekt-Array, Dies ist nach Brokerage, avg_price und avg_rating sortiert.
data = [
{name: "something1", brokerage: "some broker1", avg_price: 100, avg_rating: 1},
{name: "something2", brokerage: "some broker1", avg_price: 90, avg_rating: 2},
{name: "something3", brokerage: "some broker1", avg_price: 80, avg_rating: 3},
{name: "something4", brokerage: "some broker2", avg_price: 100, avg_rating: 1},
{name: "something5", brokerage: "some broker2", avg_price: 90, avg_rating: 2},
{name: "something6", brokerage: "some broker2", avg_price: 80, avg_rating: 3},
{name: "something7", brokerage: "some broker3", avg_price: 100, avg_rating: 1},
{name: "something8", brokerage: "some broker3", avg_price: 90, avg_rating: 2},
{name: "something9", brokerage: "some broker3", avg_price: 80, avg_rating: 3},
{name: "something10", brokerage: "some broker4", avg_price: 100, avg_rating: 1}]
Gibt es eine Karte, zu sammeln, usw. Funktion auswählen, die mir erlauben, dieses Array zu reduzieren: in jedem Broker
[{:name=>"something1", :brokerage=>"some broker1", :avg_price=>100, :avg_rating=>1},
{:name=>"something4", :brokerage=>"some broker2", :avg_price=>100, :avg_rating=>1},
{:name=>"something7", :brokerage=>"some broker3", :avg_price=>100, :avg_rating=>1},
{:name=>"something10", :brokerage=>"some broker4", :avg_price=>100, :avg_rating=>1}]
Letzteres gibt mir die Top-Broker. Ich weiß, dass dies machbar ist, indem man jeden einzelnen Block benutzt und einfach die erste Instanz eines neuen Brokerage schreibt. Ich frage mich nur, ob Ruby eine eingebaute Funktion dafür hat.
diese sind nicht gültige Objekte –
Ich verwende sie nur als ein Punkt der Abbildung. Sie sind Rubin-Objekte, keine Json-Objekte. – user2547177
on SO stellen Sie ein Codebeispiel bereit, damit andere Benutzer damit arbeiten können. Sonst können wir Ihnen nicht helfen. Siehe http://stackoverflow.com/help/mcve –