2016-04-03 24 views
0

Bir dizi şehir ve eyaletim var. Böyle bir şey görünüyor:Bir dizinin ikinci dizesini aynı dizinin ilk dizesine nasıl ekleyebilirim, ruby ​​

locations = ["Colorado Springs, CO","CO","Denver, CO","CO","Kissimmee, FL","FL","Orlando, FL", "FL"] 

Testten bunu yapan:

locations[0] << ", #{locations[1]}" 

Ve sonuç olarak bu var:

locations = ["Colorado Springs","CO","Denver","CO","Kissimmee","FL","Orlando", "FL"] 

Ben sonuçta bu sonucu almak istiyoruz

locations = ["Colorado Springs, CO", "CO", "Denver", "CO", "Kissimmee", "FL", "Orlando", "FL"] 

Bu kodu denemeye çalışıyorum

locations = ["Colorado Springs","CO","Denver","CO","Kissimmee","FL","Orlando", "FL"] 

counter0 = 0 
counter1 = 1 

while counter0 < locations.length 
    locations[counter0] << locations[counter1] 
    counter0 += 2 
    counter1 += 2 
end 

=> nil 
+1

? Daha az değil, yanlış olan bir cevap. Bunu yazarken seçiminizi başka bir yanlış cevaba dönüştürdünüz. Her iki geri dönüş değerlerine bak. Onlar soruda istediğini söylemediğin şey değiller. Sorunuzu değiştirmeyin! Yeşilleri geri çekmenizi ve tozun temizlenmesi için birkaç saat beklemenizi öneririm, sonra bir seçim yapın. Seçim yapmak için acelem yok. Ayrıca, bazı okuyucuların hala cevaplar üzerinde çalıştıklarını ve başkalarının bir seçim yaptığınız için cevap vermekten rahatsız olabileceğini düşünün. –

+1

Bir dizinin uzunluğunu boyunca yineleme yaparken değiştirmek zor. Bundan kaçınmalısın. – sawa

+2

@sawa: Aslında, dizinin uzunluğu değişmez. Yalnızca dizideki öğeler değiştirildi. –

cevap

3
locations.each_slice(2).flat_map { |city, state| ["#{city}, #{state}", state] } 
    #=> ["Colorado Springs, CO", "CO", "Denver, CO", "CO", 
    # "Kissimmee, FL", "FL", "Orlando, FL", "FL"] 
2

anahtar flat_map kullanmaktır: dizinin geri kalanı dönüştürmek, ancak bir cevap olarak nil alma w. deli acele bir cevap seçmek için Neden

locations.each_slice(2).flat_map{|x, y| [[x, y].join(", "), y]} 
# => ["Colorado Springs, CO", "CO", "Denver, CO", "CO", "Kissimmee, FL", "FL", "Orlando, FL", "FL"] 
+1

Beni 14 saniyede yendin. Buna kravat diyebilir miyiz? –

+0

Evet. Ben de öyle düşünmüştüm. Artı, küçük bir fark var. – sawa

+0

Biraz korkutucu buluyorum. Geçen gün karım, başkalarının hatalarından daha az affedici olduğumu düşündüğünü ve zaman zaman düpedüz kaba olduğunu söyledi. –