2016-04-03 9 views
0

都市と州の配列があります。このようなものになります。同じ配列の最初の文字列に2番目の文字列を追加するにはどうすればいいですか?

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

私がテストにこれをした:

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

、結果としてこれを得た:

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

は私が最終的にこの結果を取得したいと思います

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

私は以下のコードを試しています

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

殺到答えを選択するのはなぜ?間違いなく、答えは間違っています。私がこれを書いている間、あなたはあなたの選択を別の誤った答えに変えました。両方の戻り値を見てください。彼らはあなたが質問したかったことではありません。あなたの質問を変更しないでください!あなたは緑の巣を引っ込めてほこりがなくなるまで数時間待ってから選んでください。選択を急ぐ必要はありません。また、読者の中には依然として回答に取り組んでいる人がいるかもしれないし、あなたがすでに選択しているので答えを出さない人もいるかもしれないと考えてください。 –

+1

配列の反復処理中に配列の長さを変更するのは難しいことです。あなたはそれを避けるほうがいい。 – sawa

+2

@sawa:実際、配列の長さは変わりません。配列内の項目のみが変更されます。 –

答えて

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

キーがflat_mapを使用することです:配列の残りの部分を変換するが、応答としてnilを取得するためにワット

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

あなたは14秒で私を倒す。私たちはそれをネクタイと呼ぶことができますか? –

+0

うん。私はそうだと思いました。さらに、小さな違いがあります。 – sawa

+0

私は少し怖いです。先日、私の妻は、私は他人の間違いをあまり許されていないと思っていたと言いました。そして時には全く失礼でした。 –

関連する問題