JavaScript Fundamentals

تحقق كفاءة من قيم المصفوفة في جافا سكريبت

Spread the love

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

جدول المحتويات

استخدام .includes() للتحقق من القيم البسيطة

توفر طريقة .includes() الحل الأكثر مباشرة وغالباً الأكثر كفاءة للتحقق مما إذا كان المصفوف يحتوي على قيمة محددة. تعيد true إذا وجدت القيمة و false بخلاف ذلك.


const numbers = [1, 2, 3, 4, 5];
const target = 3;

if (numbers.includes(target)) {
  console.log(`المصفوف يحتوي على ${target}`);
} else {
  console.log(`المصفوف لا يحتوي على ${target}`);
}

استخدام .find() للبحث الشرطي

عندما تحتاج إلى تحديد عنصر بناءً على شرط معين بدلاً من قيمته الدقيقة، فإن طريقة .find() مثالية. تعيد أول عنصر يلبي دالة الاختبار المقدمة، أو undefined إذا لم يتم العثور على تطابق.


const objects = [
  { id: 1, name: 'Apple' },
  { id: 2, name: 'Banana' },
  { id: 3, name: 'Orange' }
];

const foundObject = objects.find(obj => obj.name === 'Banana');

if (foundObject) {
  console.log('وجد:', foundObject);
} else {
  console.log('لم يتم العثور على الكائن');
}

استخدام .filter() للعثور على تطابقات متعددة

لاسترداد جميع العناصر التي تتطابق مع شرط معين، استخدم طريقة .filter(). تعيد مصفوفة جديدة تحتوي على جميع العناصر التي تمر بالاختبار.


const numbers = [1, 2, 3, 2, 4, 2, 5];
const target = 2;

const filteredNumbers = numbers.filter(number => number === target);

if (filteredNumbers.length > 0) {
  console.log(`وجد ${filteredNumbers.length} مثيل من ${target}`);
} else {
  console.log(`لم يتم العثور على أي مثيل من ${target}`);
}

استخدام .indexOf(): نهج بديل

تعيد طريقة .indexOf() مؤشر أول ظهور لقيمة. تشير قيمة الإرجاع -1 إلى عدم وجود القيمة. على الرغم من كونها وظيفية، إلا أن .includes() تقدم بشكل عام قابلية قراءة أفضل للتحقق من الوجود البسيط.


const numbers = [1, 2, 3, 4, 5];
const target = 3;

const index = numbers.indexOf(target);

if (index !== -1) {
  console.log(`${target} وجد في المؤشر ${index}`);
} else {
  console.log(`${target} لم يتم العثور عليه`);
}

استخدام حلقة for (غير موصى به)

التكرار يدوياً باستخدام حلقة for ممكن، ولكنه بشكل عام أقل كفاءة وأقل قابلية للقراءة من الطرق المدمجة. من المستحسن استخدام الطرق المدمجة ما لم يكن لديك سبب وجيه لتجنبها.


const numbers = [1, 2, 3, 4, 5];
const target = 3;
let found = false;

for (let i = 0; i < numbers.length; i++) {
  if (numbers[i] === target) {
    found = true;
    break;
  }
}

if (found) {
  console.log(`${target} وجد`);
} else {
  console.log(`${target} لم يتم العثور عليه`);
}

اعتبارات الأداء

للتحقق من الوجود البسيط، تكون .includes() عادةً هي الأكثر كفاءة وقابلية للقراءة. .find() و .filter() هي الأنسب للبحث بناءً على الشروط أو لاسترداد جميع العناصر المتطابقة. تجنب حلقات for إلا عند الضرورة، حيث أن الطرق المدمجة مُحسّنة للأداء.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *