2017-07-04 2 views
-1

kann nicht weniger verwirrend Titel finden, aber hier ist der Pseudo-Code:auf Arrays basierend auf Namen von Elementen in einem anderen Array Hinzufügen

for all video['tags'][i] in video['tags'][3..-1] 
    topic = video['tags'][i] 
    topic_array += video['id'] 
end 

die in dem Video gibt es zwei Elemente Lassen Sie sagen, [ ‚Tags‘ 3] [..- 1]:

video['tags'][3..-1] # => ["Health", "Politics"] 
video['id']   # => 35 

ich möchte die ganze Zahl 35 zu zwei verschiedenen Arrays namens Gesundheit und Politik hinzuzufügen. Diese Arrays können vorher existieren oder nicht.

End Ergebnis Beispiel:

Health # => [21, 25, 35] 
Politics # => [35] 

Antwort

1

Anstatt mehr Arrays verwenden IDs für jeden Tag zu speichern, i einen Hash, in dem jeder Schlüssel ist ein Tag-und sein Wert ist das Array von IDs verwenden würde, zum Beispiel :

tags = { "Health" => [21, 25] } 

mit anstelle dass, könnten Sie Ihr Problem mit so etwas wie dies lösen:

video["tags"][3..-1].each do |tag| 
    tags.key?(tag) ? tags[tag] << video["id"] : tags[tag] = [video["id"]] 
end 

prüfen tags Inhalt:

tags 
#=> {"Health"=>[21, 25, 35], "Politics"=>[35]} 

die IDs zu erhalten, holen Sie einfach/lesen Sie die Taste (dh Tag), die Sie aus tags Hash, zum Beispiel:

tags["Health"] 
#=> [21, 25, 35] 
+0

Danke, aber ist mein Pseudo -code in Ruby nicht realisierbar? – Emre

+0

@Emre Sie können eine 'for' -Schleife verwenden (überprüfen Sie [diesen Beitrag] (https://stackoverflow.com/questions/2032875/syntax-for-a-for-loop-in-ruby)), obwohl es idiomatischer ist "jedes" zu verwenden; Sie können Variablen jedoch nicht dynamisch erstellen, weshalb eine andere Datenstruktur (z. B. "Hash") empfohlen wird. – Gerry

Verwandte Themen