2016-06-30 12 views
1

Ich habe zwei Arrays:Wie kombiniere ich eindimensionale Ruby-Arrays zu einem zweidimensionalen Array?

  • Array von Schul
  • Array von Schul slugs

Say das Array von Schulnamen Beschreibungen ist: [name1, name2, name3] und slug Namen sind: [slug1, slug2, slug3].

In Rubin, wie würde ich ein Array [[name1, slug1], [name2, slug2], [name3, slug3]] machen.

die Sache Mein Versuch ist eine Art javascript-ish:

<% var schoolSelect = []; 
for (var i=0; i<@schools.length; i++) 
    schoolSelect[i] = [@schools.pluck(:name)[i], @schools.pluck(:slug)[i]]; %> 
+0

Das sieht nicht wie ein Rubin 'für' aus. – orde

+0

Konnte mehr wie '(0..2) .each do | position | sein 'Code und auch ein' Ende' –

+0

Wie ich schon sagte, es war nur ein Versuch haha ​​- machte es so gut wie ich konnte in Javascript Form ... Ich lernte schnell, dass Leute es nicht mögen, wenn Sie nicht Code schreiben also habe ich etwas gepostet. –

Antwort

7

Sie werden Array#zip verwenden werden, damit sie mag:

names = %w(name1 name2 name3) 
slugs = %w(slug1 slug2 slug3) 

names.zip(slugs) 
# [["name1", "slug1"], ["name2", "slug2"], ["name3", "slug3"]] 
+1

netter Ansatz. Entfernen Sie die Kommas aber – oreoluwa

+0

@oreoluwa danke .. Kopieren/Einfügen err! :) –

2

Schlagen Sie einen Hash für diese Datenstruktur betrachten

schools = ["first", "second", "third"] 
slugs = ["a", "b", "c"] 
school_slugs = {} 

(0..2).each do |position| 
    school_slugs[schools[position]] = slugs[position] 
end 
# => 0..2 
school_slugs 
# => {"first" => "a", "second" => "b", "third" => "c"} 

Wenn Sie Arups Ansatz verwenden, können Sie dies auch tun in einen Hash, das heißt

[["name1", "slug1"], ["name2", "slug2"], ["name3", "slug3"]].to_h 

# => {"name1"=>"slug1", "name2"=>"slug2", "name3"=>"slug3"} 
+0

Möglicherweise können Sie 'each_with_object ({})' anstelle von 'hash' verwenden –

0
names = %w(name1 name2 name3) 
slugs = %w(slug1 slug2 slug3) 

Jedes Mal, wenn Sie zwei Arrays die gleiche Größe haben, wie hier,

names.zip(slugs) 
    #=> [["name1", "slug1"], ["name2", "slug2"], ["name3", "slug3"]] 

und

[names, slugs].transpose 
    #=> [["name1", "slug1"], ["name2", "slug2"], ["name3", "slug3"]] 

sind austauschbar.

Verwandte Themen