اذهب إلى المحتوى

السؤال

نشر

لدي مصفوفتين كما تظهران في المثال التالي:

members     = ["Matt Anderson", "Justin Biltonen", "Jordan Luff", "Jeremy London"]
instruments = ["guitar, vocals", "guitar", "bass", "drums"]

أريد ضم المصفوفتين مع بعض لينتج لنا Hash كما في المثال التالي (لاحظ الفواصل):

{"Matt Anderson"=>["guitar", "vocals"], "Justin Biltonen"=>"guitar", "Jordan Luff"=>"bass", "Jeremy London"=>"drums"}

فكيف أستطيع فعل ذلك في لغة روبي؟

Recommended Posts

  • 0
نشر

أعتقد أن أفضل طريقة لضم مصفوفتين لبعض مع الانتباه إلى الفواصل؛ هي عن طريق استخدام map و split. أولا حوّل السلاسل النصية المتكونة من أكثر من جزء (المفصولة بفاصل) إلى مصفوفات كما في المثال التالي:

instruments.map {|i| i.include?(',') ? (i.split /, /) : i}

ومن ثم استخدم Hash[] وzip لدمج مصفوفة members مع مصفوفة instruments لتصبح الشيفرة البرمجية الكاملة (بعد إضافة المثال السابق) كما في المثال التالي:

Hash[members.zip(instruments.map {|i| i.include?(',') ? (i.split /, /) : i})]

وسوف تحصل في النهاية على هذه النتيجة:

{"Jeremy London"=>"drums",
 "Matt Anderson"=>["guitar", "vocals"],
 "Jordan Luff"=>"bass",
 "Justin Biltonen"=>"guitar"}

أو يمكنك تحويل جميع النتائج إلى قوائم عن طريق استخدام السطر التالي:

Hash[members.zip(instruments.map {|i| i.split /, /})]

والذي سوف يعطيك:

{"Jeremy London"=>["drums"],
 "Matt Anderson"=>["guitar", "vocals"],
 "Jordan Luff"=>["bass"],
 "Justin Biltonen"=>["guitar"]}

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...