كيف تقارن المصفوفات في JavaScript - كشف الغموض!

في JavaScript ، لمقارنة مصفوفتين ، نحتاج إلى التحقق من أن طول كلتا المصفوفتين متماثل ، وأن الكائنات الموجودة فيهما من نفس النوع وأن كل عنصر في مصفوفة واحدة يساوي نظيره في مصفوفة مختلفة.

في هذا المقال ، نلقي الضوء على ' كيفية مقارنة المصفوفات في JavaScript '.

قد يلزم مقارنة المصفوفات لتحديد التكافؤ. تختلف المصفوفات في JavaScript عن المصفوفات في C أو C ++.



يمكن أن تحتوي المصفوفات على رقم أو فهرس نص في JavaScript. يعد استخدام الفهرس المرقّم والعبور والمقارنة بين المصفوفات أمرًا سهلاً ولكنه معقد في فهارس النص.

دعونا نرى بعض الطرق الممكنة قارن المصفوفات في سيناريوهات مختلفة:

  • المصفوفات لها فهرس مرقم ومتساوية في الطول.
  • المصفوفات لها فهرس مرقم وليست متساوية في الطول.
  • تحتوي المصفوفات على فهرس نص وتتساوى في الطول.
  • تحتوي المصفوفات على فهرس نصي ولا يساوي الطول.

الصفائف لها فهرس رقم وتكون متساوية في الطول

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

var Array1 = {"1", "2", "3"}

var Array2 = {"1", "2", "4"}

تحتوي المصفوفات أعلاه على عدد صغير من العناصر ، وهو ثلاثة (3). تحديد التكافؤ للمصفوفة الصغيرة أسهل.

ولكن بالنسبة للمصفوفات الأطول ، يجب أن نجد طريقة ما للعثور عليها. يأتي JavaScript بطول مدمج الطريقة التي يمكن استخدامها مع المصفوفات والكائنات لمعرفة طولها.

يمكن مقارنة هذا الطول باستخدام بناء شرطي ويفضل أن يكون إذا بيان. سيكون هذا شيئًا من هذا القبيل:

if(Array1.length == Array2.length){

    // do something;

}

من الضروري مقارنة الطول لأننا نتعامل مع حالة المصفوفات ذات الحجم المتساوي. إذا كان طول المصفوفات متساويًا ، فيمكن فحص العناصر المتقاطعة للمصفوفات بسهولة باستخدام حلقة ويفضل a for - عقدة.

سيكون هذا شيئًا من هذا القبيل:

for....

{

    document.write("Array 1 element " + Array1[i] + "is equal to
"+ "Array 2 element " + Array2[i]);

}

سيؤدي هذا فقط إلى إخراج بعض العبارات النصية التي تقارن العناصر المتقاطعة. يمكن تعديل هذا لإخراج بعض النصوص مثل 'المصفوفات متساوية' لتبسيط الأمر.

يمكن أن يكون هناك أيضًا ملف آخر الجزء الذي يمكنه التعامل مع حالة المصفوفات غير المتساوية.

الصفائف لها فهرس مرقم وليست متساوية في الطول

كما ذكرنا في الجزء الآخر من السيناريو السابق ، قد لا تكون المصفوفات متساوية في الطول. في مثل هذه الحالة ، قد تكون المصفوفة 1 مساوية للمصفوفة 2 أو قد لا تكون المصفوفة 2.

على سبيل المثال ، تحتوي المصفوفة 1 على ثلاثة عناصر كما استخدمناها سابقًا ولكن المصفوفة 2 بها 4 عناصر. تحتوي المصفوفة 2 على كل عناصر المصفوفة 1 ولكن هذا ليس صحيحًا في المصفوفة 1.

في مثل هذه الحالة ، يمكننا مقارنة كل عنصر من عناصر المصفوفة بكل عنصر من عناصر المصفوفة الأخرى وبطريقة أخرى.

لكن في هذه الحالة ، يمكن أن تكون مصفوفة واحدة فقط مساوية للأخرى أو لا ، لكن لا يمكن أن يكون كلاهما متساويًا لأن لهما أطوال مختلفة. لمقارنة المصفوفات بهذه الطريقة ، يمكننا استخدام حلقة for المتداخلة والتي يمكن أن تكون شيئًا كالتالي:

for...

    for...

{

    {

    	if(Array[i] == Array[j])

    	{
   		 //do something

   		         }

    }

}

يجب أن نستخدم إذا البيان داخل الحلقات المتداخلة لأننا نتعامل مع مصفوفات ذات أحجام متنوعة.

المصفوفات لها فهرس نص وهي متساوية في الطول

المصفوفات المفهرسة بالنص ليست ممارسة جيدة. إنه يزيد من تعقيد مهمة مقارنة مصفوفات الطول وكذلك الطول غير المتكافئ. يغطي هذا أيضًا 'المصفوفات لها فهرس نص وليست متساوية'.

نفس الطول ، كل قيمة متساوية

تتمثل إحدى الطرق لمقارنة var1 و var2 في التحقق مما إذا كانت كل قيمة من var1 مساوية تمامًا للقيمة المقابلة لـ var2.

يعمل هذا بشكل جيد إذا كانت جميع عناصر المصفوفات عناصر أولية على عكس العناصر. في نهاية العملية تقوم بإرجاع قيمة منطقية. هنا مثال:

const var1 = [1, 2, 3];

const var2 = [4, 5, 6];

const var3 = [1, 2, 3];


function arrayEquals(var1, var2) {

  return Array.isArray(var1) && Array.isArray(var2) &&
var1.length === var2.length && var1.every((val, index) => val
=== var2[index]);

}


arrayEquals(var1, var2);

arrayEquals(var1, var3);

يجب أن يبدو الإخراج كما يلي:
خطأ صحيح

استخدام طريقة JSON.stringify ()

يوفر JavaScript وظيفة جسون .stringify () من أجل تحويل كائن أو مصفوفة إلى سلسلة JSON. من خلال التحويل إلى سلسلة JSON ، يمكننا التحقق مباشرة مما إذا كانت السلاسل متساوية أم لا.

ومع ذلك ، فإن جسون .stringify () يحول التابع مصفوفة إلى سلسلة JSON. ألق نظرة على البرنامج أدناه لفهم المفهوم جيدًا.

function compareArrays(arr1, arr2){

    // compare arrays

    const result = JSON.stringify(arr1) == JSON.stringify(arr2)

    
// if result is true

    if(result){

   	 console.log('The arrays have the same elements.');

    }

    else{

   	 console.log('The arrays have different elements.');

    }

}

const array1 = [1, 3, 5, 8];

const array2 = [1, 3, 5, 8];

compareArrays(array1, array2);

سيقارن البرنامج أعلاه المصفوفات المعطاة وينتج مخرجات. المصفوفات لها نفس العناصر ب ecause وضعنا نفس القيمة في كل من المصفوفتين.

في منشور المدونة هذا ، نحن تعلمت 'كيفية مقارنة المصفوفات في JavaScript' وبحثت في بعض الطرق المتاحة للقيام بذلك بما في ذلك رمز مثال مباشر.