شبيبة تعليمي

شبيبة المنزل مقدمة شبيبة شبيبة إلى أين إخراج JS بيانات شبيبة بناء جملة JS تعليقات JS متغيرات JS JS Let شبيبة كونست مشغلي JS شبيبة الحساب احالة JS أنواع بيانات JS وظائف JS كائنات JS أحداث شبيبة سلاسل شبيبة طرق سلسلة JS بحث سلسلة JS JS String Templates أرقام شبيبة طرق عدد JS صفيفات JS طرق صفيف JS ترتيب صفيف JS تكرار صفيف JS JS Array Const تواريخ شبيبة تنسيقات التاريخ JS طرق الحصول على تاريخ JS طرق تعيين تاريخ JS شبيبة الرياضيات شبيبة عشوائية شبيبة منطقية مقارنات شبيبة شروط JS مفتاح JS JS Loop For JS Loop For In. شبيبة حلقة JS لـ Of شبيبة حلقة بينما شبيبة استراحة شبيبة تكرارات مجموعات JS خرائط شبيبة شبيبة تايبوف JS نوع التحويل شبيبة Bitwise JS RegExp أخطاء JS شبيبة النطاق رفع JS وضع JS الصارم شبيبة هذه الكلمة دالة سهم JS فئات JS شبيبة شبيبة تصحيح أخطاء JS دليل أسلوب JS أفضل ممارسات JS أخطاء JS أداء JS شبيبة الكلمات المحجوزة

إصدارات JS

إصدارات JS JS 2009 (ES5) شبيبة 2015 (ES6) شبيبة 2016 شبيبة 2017 شبيبة 2018 شبيبة آي إي / إيدج تاريخ شبيبة

كائنات JS

تعريفات الكائن خصائص الموضوع طرق الكائن عرض الكائن موصلي الكائنات منشئو الكائنات نماذج الكائن كائن تكرارات مجموعات الكائن خرائط الكائن مرجع الكائن

وظائف JS

تعريفات الوظائف معلمات الوظيفة استدعاء الوظيفة استدعاء الوظيفة تطبيق الوظيفة عمليات إغلاق الوظائف

فئات JS

مقدمة عن الفصل الوراثة الطبقية فئة ثابتة

شبيبة آسينك

عمليات الاسترجاعات JS شبيبة غير متزامن وعود شبيبة شبيبة Async / انتظار

JS HTML DOM

مقدمة DOM طرق DOM مستند DOM عناصر DOM DOM HTML نماذج DOM DOM CSS الرسوم المتحركة DOM أحداث DOM مستمع أحداث DOM التنقل في DOM عقد DOM مجموعات DOM قوائم عقدة DOM

متصفح JS BOM

نافذة JS شاشة JS موقع JS تاريخ شبيبة شبيبة ملاح تنبيه منبثق لـ JS توقيت شبيبة ملفات تعريف الارتباط JS

JS Web APIs

مقدمة واجهة برمجة تطبيقات الويب واجهة برمجة تطبيقات نماذج الويب واجهة برمجة تطبيقات سجل الويب واجهة برمجة تطبيقات تخزين الويب Web Worker API واجهة برمجة تطبيقات جلب الويب واجهة برمجة تطبيقات تحديد الموقع الجغرافي على الويب

شبيبة أجاكس

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

شبيبة شبيبة

مقدمة JSON بناء جملة JSON JSON مقابل XML أنواع بيانات JSON تحليل JSON تنسيق JSON كائنات JSON صفائف JSON خادم JSON JSON PHP JSON HTML جسون جسونب

JS مقابل jQuery

محددات jQuery jQuery HTML jQuery CSS jQuery DOM

شبيبة الرسومات

شبيبة الرسومات قماش شبيبة شبيبة بلوتلي JS Chart.js مخطط جوجل JS شبيبة D3.js

أمثلة JS

أمثلة JS JS HTML DOM إدخال JS HTML كائنات JS HTML أحداث HTML متصفح JS محرر JS تمارين شبيبة شبيبة مسابقة شهادة JS

مراجع JS

كائنات جافا سكريبت كائنات HTML DOM


مصفوفات فرز جافا سكريبت


فرز صفيف

تقوم sort()الطريقة بفرز المصفوفة أبجديًا:

مثال

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

عكس المصفوفة

الطريقة reverse()تعكس العناصر في المصفوفة.

يمكنك استخدامه لفرز المصفوفة بترتيب تنازلي:

مثال

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

فرز رقمي

بشكل افتراضي ، تقوم sort()الوظيفة بفرز القيم كسلاسل .

يعمل هذا بشكل جيد مع السلاسل (تأتي كلمة "Apple" قبل "Banana").

ومع ذلك ، إذا تم فرز الأرقام كسلاسل ، فإن "25" أكبر من "100" ، لأن "2" أكبر من "1".

لهذا السبب ، sort()ستنتج الطريقة نتيجة غير صحيحة عند فرز الأرقام.

يمكنك إصلاح ذلك من خلال توفير وظيفة مقارنة :

مثال

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

استخدم نفس الحيلة لفرز مصفوفة تنازليًا:

مثال

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});


وظيفة المقارنة

الغرض من وظيفة المقارنة هو تحديد ترتيب فرز بديل.

يجب أن تُرجع دالة المقارنة قيمة سالبة أو صفرية أو موجبة ، اعتمادًا على الوسيطات:

function(a, b){return a - b}

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

إذا كانت النتيجة سلبية aيتم فرزها من قبل b.

إذا كانت النتيجة إيجابية bيتم فرزها من قبل a.

إذا كانت النتيجة 0 ، فلن يتم إجراء أي تغييرات بترتيب فرز القيمتين.

مثال:

تقارن دالة المقارنة جميع القيم في المصفوفة ، قيمتان في كل مرة (a, b).

عند المقارنة بين 40 و 100 ، sort()تستدعي الطريقة دالة المقارنة (40 ، 100).

تحسب الدالة 40-100 (a - b)، وبما أن النتيجة سالبة (-60) ، فإن دالة الفرز ستفرز 40 كقيمة أقل من 100.

يمكنك استخدام مقتطف الشفرة هذا لتجربة الفرز رقميًا وأبجديًا:

<button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;

function myFunction1() {
  points.sort();
  document.getElementById("demo").innerHTML = points;
}

function myFunction2() {
  points.sort(function(a, b){return a - b});
  document.getElementById("demo").innerHTML = points;
}
</script>

فرز المصفوفة بترتيب عشوائي

مثال

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});


طريقة فيشر ياتس

المثال أعلاه ، array .sort () ، ليس دقيقًا ، فهو يفضل بعض الأرقام على الأخرى.

الطريقة الصحيحة الأكثر شيوعًا ، تسمى طريقة فيشر ياتيس shuffle ، وقد تم تقديمها في علم البيانات في وقت مبكر من عام 1938!

في JavaScript ، يمكن ترجمة الطريقة إلى هذا:

مثال

const points = [40, 100, 1, 5, 25, 10];

for (let i = points.length -1; i > 0; i--) {
  let j = Math.floor(Math.random() * i)
  let k = points[i]
  points[i] = points[j]
  points[j] = k
}


ابحث عن أعلى قيمة (أو أدنى) للصفيف

لا توجد وظائف مضمنة للعثور على الحد الأقصى أو الحد الأدنى للقيمة في المصفوفة.

ومع ذلك ، بعد فرز المصفوفة ، يمكنك استخدام الفهرس للحصول على القيمتين الأعلى والأدنى.

الفرز تصاعديا:

مثال

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

الفرز التنازلي:

مثال

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

يعد فرز المصفوفة بأكملها طريقة غير فعالة للغاية إذا كنت تريد فقط العثور على أعلى (أو أدنى) قيمة.


استخدام Math.max () في المصفوفة

يمكنك استخدامه Math.max.applyللعثور على أكبر رقم في المصفوفة:

مثال

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

Math.max.apply(null, [1, 2, 3])يعادل Math.max(1, 2, 3).


استخدام Math.min () في المصفوفة

يمكنك استخدامه Math.min.applyللعثور على أقل رقم في المصفوفة:

مثال

function myArrayMin(arr) {
  return Math.min.apply(null, arr);
}

Math.min.apply(null, [1, 2, 3])يعادل Math.min(1, 2, 3).


طرق JavaScript Min / Max

الحل الأسرع هو استخدام طريقة "محلية الصنع".

تتكرر هذه الدالة عبر مصفوفة تقارن كل قيمة بأعلى قيمة تم العثور عليها:

مثال (بحث عن الحد الأقصى)

function myArrayMax(arr) {
  let len = arr.length;
  let max = -Infinity;
  while (len--) {
    if (arr[len] > max) {
      max = arr[len];
    }
  }
  return max;
}

تتكرر هذه الدالة عبر مصفوفة تقارن كل قيمة بأقل قيمة تم العثور عليها:

مثال (بحث دقيقة)

function myArrayMin(arr) {
  let len = arr.length;
  let min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
}


فرز صفائف الكائن

غالبًا ما تحتوي مصفوفات JavaScript على كائنات:

مثال

const cars = [
  {type:"Volvo", year:2016},
  {type:"Saab", year:2001},
  {type:"BMW", year:2010}
];

حتى إذا كانت الكائنات لها خصائص أنواع بيانات مختلفة ، sort()يمكن استخدام الطريقة لفرز المصفوفة.

الحل هو كتابة دالة مقارنة لمقارنة قيم الخاصية:

مثال

cars.sort(function(a, b){return a.year - b.year});

تعتبر مقارنة خصائص السلسلة أكثر تعقيدًا:

مثال

cars.sort(function(a, b){
  let x = a.type.toLowerCase();
  let y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});

مرجع صفيف كامل

للحصول على مرجع مصفوفة كامل ، انتقل إلى:

استكمال مرجع مصفوفة جافا سكريبت .

يحتوي المرجع على أوصاف وأمثلة لجميع خصائص وطرق Array.

اختبر نفسك مع التمارين

ممارسه الرياضه:

استخدم طريقة Array الصحيحة لفرز fruitsالمصفوفة أبجديًا.

const fruits = ["Banana", "Orange", "Apple", "Kiwi"];
;