ฉันมี 2 อาร์เรย์:
array1 = ["H", "e", "l", "l", "o"]
array2 = ["o", "l", "l", "e", "H"]
ฉันต้องการให้องค์ประกอบ array1 กลายเป็นคีย์ในแฮชใหม่และองค์ประกอบ array2 กลายเป็นค่าที่สอดคล้องกันในแฮชเดียวกัน ใครช่วยกรุณาแนะนำวิธีการทำเช่นนี้?
ขอบคุณ
ฉันมี 2 อาร์เรย์:
array1 = ["H", "e", "l", "l", "o"]
array2 = ["o", "l", "l", "e", "H"]
ฉันต้องการให้องค์ประกอบ array1 กลายเป็นคีย์ในแฮชใหม่และองค์ประกอบ array2 กลายเป็นค่าที่สอดคล้องกันในแฮชเดียวกัน ใครช่วยกรุณาแนะนำวิธีการทำเช่นนี้?
ขอบคุณ
มี "l"
สองตัวในอาร์เรย์ "key" ในขณะที่แฮชไม่สามารถมีคีย์ที่ซ้ำกันได้ โซลูชันใดๆ จะมี "l" => "e"
หรือ "l" => "l"
แต่ไม่ใช่ทั้งสองอย่าง หากไม่เป็นไร วิธีแก้ปัญหาของ @RubyLovely ก็เยี่ยมมาก หากคุณต้องการเก็บการแมปไว้สำหรับแต่ละคู่ อาร์เรย์ของแฮชอาจเหมาะสม:
array1 = ["H", "e", "l", "l", "o"]
array2 = ["o", "l", "l", "e", "H"]
array1.zip(array2).map{|pair| Hash[*pair]}
# => [{"H"=>"o"}, {"e"=>"l"}, {"l"=>"l"}, {"l"=>"e"}, {"o"=>"H"}]
วิธีแก้ปัญหาโดย @RubyLovely คือสิ่งที่ฉันจะทำ แต่เพื่อความหลากหลายนี่เป็นอีกวิธีหนึ่ง:
array1.each_with_index.reduce({}) do |memo,(x,i)|
memo[x] = array2[i]; memo
end
# => {"H"=>"o", "e"=>"l", "l"=>"e", "o"=>"H"}
เมื่อทำเช่นนี้ คุณไม่จำเป็นต้องสร้างอาร์เรย์ระดับกลาง และด้วยเหตุนี้จึงมีประสิทธิภาพมากกว่าการทำเช่นนี้
h = {}
array1.zip(array2){|k, v| h[k] = v}
h # => {"H"=>"o", "e"=>"l", "l"=>"e", "o"=>"H"}
array1 = ["H", "e", "k", "l", "o"] array2 = ["o", "l", "l", "e", "H"] p Hash[array1.zip(array2)] # >> {"H"=>"o", "e"=>"l", "k"=>"l", "l"=>"e", "o"=>"H"}
- person Arup Rakshit; 30.05.2013
"l"
สองตัวในอาร์เรย์คีย์ ในขณะที่แฮชไม่สามารถมีคีย์ที่ซ้ำกัน โซลูชันใดๆ จะมี"l" => "e"
หรือ"l" => "l"
แต่ไม่ใช่ทั้งสองอย่าง สิ่งที่ต้องระวังหากคุณจะมีรายการซ้ำในอาร์เรย์ที่กลายเป็นคีย์ - person Darshan Rivka Whittle   schedule 30.05.2013