Blog Post - 6. Juli 2015
Array aus Hashen reduzieren [Ruby]

Array aus Hashen reduzieren [Ruby]

Endlich mal wieder was für meine Gedankenablage. Aktuell muss ich einen Job-Feed auslesen, bei dem die Übersetzungen etwas seltsam strukturiert sind. Der Feed enthält ein Attribut "translations" und diesem widerum befinet sich ein Array aus Hashen nach folgendem Muster:

translations: [{title_en: "Title", description_en: "Description"}, {title_de: "Titel", description_de: "Beschreibung"}]

Was ich aber benötige um das sinnvoll auslesen zu können, ist folgendes:

translations: {title_en: "Title", description_en: "Description", title_de: "Titel", description_de: "Beschreibung"}

Ich hatte es zunächst mit flatten versucht und später auch eine unglaublich lange Methode aufgebaut und via map einen neuen Hash geschrieben. Das Mittel der Wahl ist hier jedoch reduce (http://ruby-doc.org/core-2.1.0/Enumerable.html#method-i-reduce). Mit der ":merge" Strategie benötige ich nur noch folgenden One-Liner:

self.translation.reduce({}, :merge)