/ / Ako sa môžem pohybovať v každej položke 2D poľa? - polia, rubín

Ako môžem prechádzať každou položkou 2D poľa? - matice, rubín

Takže viem, že sa môžete pohybovať v 2D poli s niečím podobným

arr1.each do |a1|
a1.each do |a2|
puts a2

čo sa však snažím urobiť, je trochu iné. Mám 2 sady hodnôt uložených v poliach a chcem sa nimi prepnúť a vyplniť rozbaľovaciu ponuku z informácií.

Takže mám údaje ako:

names = ["bob", "frank", "tim"]
id = [1, 2, 3]

ktorá sa vráti do poľa metódou ako je táto:

def method_name
#stuff
return names, id
end

To, čo chcem v zobrazení urobiť, je spárovanie príslušných indexov medzi sebou. Takže pre vyššie uvedený príklad bob-1 frank-2 tim-3 Zdá sa, že na to prišiel. Skúsil som rozrezávať a vnoriť slučky a tiež som sa snažil vrátiť hash namiesto poľa. Stratil som sa.

Keby niekto mal nejaké informácie o tom, ako tieto informácie pritiahnuť spôsobom, ktorý sa snažím urobiť, alebo iným jednoduchším spôsobom, ako to urobiť, skutočne by som ocenil tento vstup.

odpovede:

0 pre odpoveď č. 1

Toto je zriedkavý prípad v Ruby, kde je užitočné opakovanie indexu:

(0...names.size).map do |idx|
"#{names[idx]}-#{id[idx]}"
end

2 pre odpoveď č. 2

names.zip(id).map { |e| e.join("-") }

zip kombinuje tieto dve polia do radu polí, ako je tento:

[["bob", 1], ["frank", 2], ["tim", 3]]

map slučky cez každý z 3 prvkov vonkajšieho poľa a prevádza každé vnútorné pole na reťazec spojením svojich dvoch prvkov spolu s pomlčkou pomocou join.

vidieť zips, mapa, a pripojiť dokumentácie.

Vo všeobecnosti sa pri výskume manipulácie s poľami v Ruby budete chcieť pozrieť na dokumenty pre Array aj na dokumenty pre Enumerable.