So rufen Sie den Hashwert in einem Array in Ruby ab

Als ich Ruby zum ersten Mal seit langer Zeit wieder berührt habe, habe ich es nicht so gut verstanden, dass ich überrascht war, also habe ich es nachgeschlagen.

Im Falle einer solchen unangenehmen Kombination von Array und Hash.

test.rb


user_data = [
  { user: { profile: { name: 'George', sex: 'man' } } },
  { user: { profile: { name: 'Alice', sex: 'woman' } } },
  { user: { profile: { name: 'Taro', sex: 'man' } } }
]

In dem Array gibt es einen Hash namens Benutzer, es gibt einen Hash namens Profil verschachtelt und es gibt einen Wert im Schlüssel namens Name ... Ich verstehe nicht mehr.

Nehmen wir das raus.

Nehmen Sie 'George' heraus.

So was

test.rb


puts user_data[0][:user][:profile][:name]

Wenn Sie 'Alice' herausnehmen, sieht es natürlich so aus

test.rb


puts user_data[1][:user][:profile][:name]

Ich habe gerade die Position des Arrays geändert.

Wenn Sie das Geschlecht im Hash von 'Alice' abrufen möchten

test.rb


puts user_data[1][:user][:profile][:sex]

Ich habe gerade geändert: Name zu: Geschlecht.

Alle abrufen: Namen im Array

Da es sich um ein Array handelt, können Sie jedes einzeln extrahieren.

test.rb


user_data.each do |values|
  puts values[:user][:profile][:name]
end

Das Ergebnis wird sein

test.rb


George
Alice
Taro

Bei Verwendung der Grabungsmethode

Ab Ruby 2.3 ist dig als neue Methode verfügbar, die in Hash-Klassen verwendet werden kann.

Versuchen Sie, 'Schlucht' mit der Grabungsmethode abzurufen

test.rb


puts user_data.dig(0, :user, :profile, :name)

Wenn der Hash in einem Array enthalten ist, geben Sie einfach die gewünschte Anzahl von Daten in das Argument ein.

Versuchen Sie, alle ': name' mit der dig-Methode abzurufen

test.rb


user_data.each do |values|
  puts values.dig(:user, :profile, :name)
end

Vorteile der Dig-Methode

Es scheint der Unterschied zwischen der Rückgabe mit einem Fehler und der Rückgabe mit Null zu sein, wenn der Schlüssel nicht gefunden wird. Wenn Sie dig verwenden, wird es als Null zurückgegeben, sodass Sie keine Maßnahmen gegen Fehler ergreifen müssen. (Bis dahin verwendete er die Abrufmethode usw.)

test.rb


user_data = [
  {user: {}},
  {user: {}},
  {user: {}}
]

#Bei Verwendung von dig
user_data.each do |values|
  puts values.dig(:user, :profile, :age)
end

#Wenn Sie nicht dig verwenden
user_data.each do |values|
  puts values[:user][:profile][:age]
end

Das Ergebnis sieht so aus

test.rb


% ruby tmp/test.rb
#=> nil

#=> undefined method `[]' for nil:NilClass (NoMethodError)

Recommended Posts

So rufen Sie den Hashwert in einem Array in Ruby ab
So geben Sie den Wert aus, wenn sich ein Array im Array befindet
So ändern Sie eine Zeichenfolge in einem Array in eine Zahl in Ruby
[Ruby] So rufen Sie den Inhalt des Doppel-Hash ab
[Ruby] Wie man gerade oder ungerade Zahlen in einem Array zählt
[Hinweis] [Anfänger] Schreiben, wenn der Wert eines Array-Elements in einem sich wiederholenden Satz von Ruby geändert wird
So geben Sie ein Array für den Rückgabewert / das Rückgabeargument einer Methode in der CORBA IDL-Datei an
So erstellen Sie die einfachste Blockchain in Ruby
Ich möchte den Wert in Ruby erhalten
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
[Schienen] So zeigen Sie Bilder in der Ansicht an
Wie man in Ruby auf unbestimmte Zeit iteriert
Anfordern durch Übergeben eines Arrays an eine Abfrage mit dem HTTP-Client von Ruby
So installieren Sie Bootstrap in Ruby
So fügen Sie dieselben Indizes in ein verschachteltes Array ein
[Ruby] So extrahieren Sie einen bestimmten Wert aus einem Array unter mehreren Bedingungen [select / each]
[Swift5] So erhalten Sie ein Array und eine Reihe von Unterschieden zwischen Arrays
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
So ermitteln Sie die Länge einer Audiodatei mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
So fügen Sie einen neuen Hash / Array hinzu
So übergeben Sie den Wert an einen anderen Bildschirm
So erhalten Sie das Datum mit Java
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
So konvertieren Sie ein Array von Strings mit der Stream-API in ein Array von Objekten
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
So ändern Sie den Wert einer Variablen an einem Haltepunkt in IntelliJ
So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
Android-Entwicklung, wie man den Wert des JSON-Objekts auf null überprüft
So erstellen Sie Ihre eigene Anmerkung in Java und erhalten den Wert
So finden Sie die Ursache des Ruby-Fehlers
So überprüfen Sie das Protokoll im Docker-Container
So verwenden Sie ein Array für HashMap-Schlüssel
So lösen Sie Ausdrucksprobleme in Java
So erstellen Sie ein ausführbares JAR in Maven
So überprüfen Sie Rails-Befehle im Terminal
So implementieren Sie Paginierung in GraphQL (für Ruby)
[Ruby-Grundlagen] Verwendung der Slice-Methode
So überprüfen Sie, ob eine Instanzvariable in einer Ruby-Klasse definiert ist
So beheben Sie Fehler, die beim Integrationstest "Ruby on Rails" auftreten
Initialisieren Sie das Ruby-Array mit 0 für Java, dh setzen Sie den Standardwert auf 0
So erstellen Sie eine Beurteilungsmethode, um nach einem beliebigen Zeichen im Array zu suchen
So starten Sie einen Index aus einer beliebigen Zahl in der iterativen Ruby-Verarbeitung
So machen Sie ein Bild mit Processing teilweise transparent
So installieren Sie Ruby auf einer EC2-Instanz von AWS
[Ruby] Verwendung der Standardausgabe bei der bedingten Verzweigung