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

Mohammed Ahmed19

الأعضاء
  • المساهمات

    4
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة Mohammed Ahmed19

  1. بتاريخ 3 ساعات قال عبدالمجيد الجرادي:

    إذا لم تقم بإضافة أي شيء فسيتم الفرز بالطريقة الإفتراضية الذي شرحتها مسبقاً.

    أما إذا قمت بإضافة دالة حيث شكل الدالة ليس عشوائياً حيث أن دالة sort تتوقع أن تكون الدالة بهذا الشكل كما في التوثيق الرسمي

    
    /* الدالة تتوقع أن تكون الدالة بهذا الشكل بحث تحتوي على مُدخلين 
     * وإرجاع قيمة إما أكبر من الصفر أو أصغر من أو يساوي الصفر
    */
    (x,y) => { 
      // ضع الكود الذي تريد ومن ثم قم بإعادة قيمة 
    }

    حيث أنها تتوقع أن يكون للدالة مُدخلين وضع لهما أي اسم فليس هناك مشكلة وهنا وضعنا x و y ولا مشكلة بتغييرهما حيث أن دالة sort تتوقع أن تكون الدالة الذي ستمررها لها يجب أي يكون لها مُدخلين.

    ومن ثم دالة sort عند الفرز تقوم بتحديد العنصر الأول من المصفوفة والعنصر المجاور من المصفوفة ومن ثم تقوم بتمرير هذين العنصرين مكان x و y حيث مكان x سيوضع فيه قيمة العنصر الأول ومكان y سيوضع فيه مكان العنصر المجاور ومن ثم هذه الدالة التي مررناها ستقوم بإرجاع قيمة معينة

    • حيث إذا كانت القيمة المُرجعة أكبر من الصفر فسيتم فرز y قبل x
    • اما إذا كانت القيمة المُرجعة أصغر من أو يساوي الصفر فسيبقى العنصرين x و y كما هما

    حيث في دالة المقارنة التي وضعناها قمنا بكتابة y - x حيث على سبيل المثال يكون العنصر y يساوي 4 والعنصر x يساوي 2 إذن ستكون 2 - 4 والناتج سيكون 2 وهو أكبر من الصفر ، إذن سيتم فرز y أي 2 قبل x أي 4 وهكذا لبقية العناصر

    شكرا لك اخ عبد المجيد على التوضيح

  2. بتاريخ 15 ساعات قال عبدالمجيد الجرادي:

    تقوم دالة sort() بفرز عناصر المصفوفة في مكانها وإرجاع المصفوفة التي تم فرزها. 

    ترتيب الفرز الافتراضي تصاعدي ، مبني على تحويل العناصر إلى سلاسل ، ثم مقارنة تسلسل قيم وحدات رمز UTF-16.

    حيث أي عنصر في المصفوفة يتم تحويله الى نص ، على سبيل المثال إذا كان العنصر رقم فيتم تحويله الى سلسلة نصية string ومن ثم يتم مقارنة السلاسل النصية وفقاً لقيمها في نظام UTF-16 . هذه هي الحالة الإفتراضية لدالة sort أي إذا لم تقم بتمرير دالة مقارنة إليها ، على سبيل المثال

    
    let arr = [4,30,100,1]
    
    arr.sort()
    // [1, 100, 30, 4]
    /*
     * تم ترتيب العناصر على أنها سلاسل نصية ووفقاً لقيمها في نظام
     * UTF-16
    */

    أما إذا قمت بتمرير دالة مقارنة إليها فيتم ترتيب العناصر بناءً على دالة المقارنة ولايتم الترتيب الافتراضي بتحويل العناصر الى سلاسل نصية string ، كما في الكود الخاص بك

    
    let numbers =[2, 14, 1, 2, 5];
    /* دالة المقارنة تقوم بمقارنة عنصرين متجاورين حيث المتغير
     * x
     * هو المتغير الأول والمتغير
     * y
     * هو المتغير التالي المجاور للمتغير
     * x
     * ويتم إرجاع المتغير الأكبر
    */
    
    number.sort((x,y) => y - x);

     

    ولكن كيف دالة sort تتعرف على x , y  بأنهم عناصر ؟

×
×
  • أضف...