• 0

كيف أفرز مصفوفة بترتيب تنازلي في الروبي ؟

لدي المصفوفة التالي:

[
  { :foo => 'foo', :bab => 2 },
  { :foo => 'foo', :bab => 3 },
  { :foo => 'foo', :bab => 5 },
]

أريد أن أقوم بفرز هذه المصفوفة تنازليا حسب قيمة :bab في كل سطر، فما هي أفضل طريقة للفرز ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك عدة طرق لفرز العناصر المصفوفة تنازليا حسب قيمة معينة في الروبي، فيمكنك على سبيل المثال استخدام التابع sort حسب المعطيات التالية حتى تتمكن من الفرز:

a.sort{|a,b| b[:bab] <=> a[:bab]}

أو يمكنك أيضا استخدام التابع sort_by لترتيب عناصر المصفوفة تصاعديا ومن ثم تقوم باستخدام .reverse! لإعادة ترتيبها بشكل تنازلي كما في المثال التالي:

a.sort_by { |h| h[:bab] }.reverse!

كما يمكنك أيضا استخدام هذه الطريقة السهلة لترتيب العناصر بشكل تنازلي كما في المثال التالي:

 a.sort {|x,y| y[:bab]<=>x[:bab]}

حيث ستكون النتيجة بعد تنفيذ هذا السطر شبيه بهذه:

irb
>> a = [
?>   { :foo => 'foo', :bar => 2 },
?>   { :foo => 'foo', :bar => 3 },
?>   { :foo => 'foo', :bar => 5 },
?> ]
=> [{:bar=>2, :foo=>"foo"}, {:bar=>3, :foo=>"foo"}, {:bar=>5, :foo=>"foo"}]

>>  a.sort {|x,y| y[:bar]<=>x[:bar]}
=> [{:bar=>5, :foo=>"foo"}, {:bar=>3, :foo=>"foo"}, {:bar=>2, :foo=>"foo"}]

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن