🔍 البحث في المصفوفات في جافا سكريبت: دليلك الشامل للمبتدئين
مرحباً بك في عالم البحث داخل المصفوفات! 🎯 تخيل أن لديك صندوقاً كبيراً مليئاً بالألعاب، وتريد العثور على لعبة معينة بسرعة. في جافا سكريبت، المصفوفات (Arrays) تشبه هذا الصندوق، ولدينا أدوات ذكية تساعدنا في البحث عن العناصر بداخلها دون الحاجة لفحص كل عنصر يدوياً. في هذا الدرس، سنتعلم معاً ثلاث طرق أساسية وبسيطة للبحث.
📌 لماذا نحتاج للبحث في المصفوفات؟
قبل أن نبدأ، دعنا نفهم أهمية البحث. تخيل أنك تبني تطبيقاً لقائمة المهام، وتريد التحقق إذا كانت مهمة معينة موجودة بالفعل في القائمة قبل إضافتها. أو ربما تبحث عن اسم طالب في قائمة الطلاب. البحث عملية يومية في البرمجة، وجافا سكريبت توفر لنا دوال جاهزة تجعل هذه المهمة سهلة جداً! ✨
🔎 الطريقة الأولى: indexOf() - البحث عن موقع العنصر
أول وأبسط طريقة للبحث هي استخدام الدالة indexOf(). هذه الدالة تبحث عن قيمة معينة في المصفوفة وتعيد لنا رقم الفهرس (Index) حيث وجدت هذه القيمة لأول مرة.
كيف تعمل؟
- إذا وجدت القيمة: تعيد رقم الفهرس (يبدأ من 0).
- إذا لم تجد القيمة: تعيد الرقم
-1.
// مثال بسيط للبحث عن فاكهة في قائمة
let fruits = ['Banana', 'Orange', 'Apple', 'Mango', 'Strawberry'];
// نبحث عن موقع 'موز' في المصفوفة
let bananaIndex = fruits.indexOf('Orange');
console.log(bananaIndex); // الناتج: 1 (لأن 'موز' في الفهرس 1)
// نبحث عن 'تفاح'
let appleIndex = fruits.indexOf('Apple');
console.log(appleIndex); // الناتج: 0 (تجد أول ظهور لـ'تفاح')
// نبحث عن فاكهة غير موجودة
let mangoIndex = fruits.indexOf('Mango');
console.log(mangoIndex); // الناتج: -1 (لأن 'مانجو' غير موجودة)
💡 ملاحظة مهمة: indexOf() تستخدم مقارنة صارمة (===)، مما يعني أنها تبحث عن القيمة تماماً كما هي. إذا بحثت عن الرقم 5، لن تجد النص '5'.
✅ الطريقة الثانية: includes() - التحقق من الوجود
إذا كنت تريد فقط معرفة إذا كان العنصر موجوداً أم لا دون الاهتمام بمكانه، فالدالة includes() هي الخيار المثالي! 👍
كيف تعمل؟
- إذا وجدت العنصر: تعيد
true(صحيح). - إذا لم تجده: تعيد
false(خطأ).
// مثال: التحقق من وجود ألوان في القائمة
let colors = ['Red', 'Blue', 'Green', 'Yellow'];
// التحقق من وجود 'أزرق'
let hasBlue = colors.includes('Blue');
console.log(hasBlue); // الناتج: true
// التحقق من وجود 'بنفسجي'
let hasPurple = colors.includes('Purple');
console.log(hasPurple); // الناتج: false
// مثال عملي: التحقق قبل الإضافة
let tasks = ['Write Report', 'Review Email'];
if (!tasks.includes('Call Client')) { // إذا لم تكن المهمة موجودة
tasks.push('Call Client'); // أضفها
console.log('تمت إضافة المهمة الجديدة!');
} else {
console.log('المهمة موجودة بالفعل!');
}
🎯 الفرق بين includes() و indexOf():
includes(): للإجابة على سؤال "هل يوجد؟" (نعم/لا).indexOf(): للإجابة على سؤال "أين يوجد؟" (رقم الفهرس).
🕵️♂️ الطريقة الثالثة: find() - البحث بشروط معقدة قليلاً
ماذا لو أردت البحث عن عنصر بناءً على شرط معين وليس مجرد قيمة ثابتة؟ هنا تأتي قوة الدالة find()! 🌟
تأخذ الدالة find() دالة أخرى (وظيفة) كمعامل لها. هذه الوظيفة تفحص كل عنصر في المصفوفة حتى تجد العنصر الأول الذي يحقق الشرط المطلوب.
// مثال: البحث عن أول رقم أكبر من 10
let numbers = [5, 8, 12, 3, 17, 20];
// نبحث عن أول رقم أكبر من 10
let firstLargeNumber = numbers.find(function(number) {
return number > 10; // الشرط: الرقم أكبر من 10
});
console.log(firstLargeNumber); // الناتج: 12 (أول رقم يحقق الشرط)
// مثال آخر: البحث عن طالب عمره 18 سنة
let students = [
{ name: 'Ahmed', age: 17 },
{ name: 'Sara', age: 19 },
{ name: 'Khaled', age: 18 },
{ name: 'Fatima', age: 16 }
];
// نبحث عن الطالب الذي عمره 18 سنة
let student18 = students.find(function(student) {
return student.age === 18;
});
console.log(student18); // الناتج: { name: 'Khaled', age: 18 }
ماذا يحدث إذا لم يجد find() العنصر؟
تعيد undefined، مما يعني "غير معرّف".
let result = numbers.find(function(num) {
return num > 100; // لا يوجد رقم أكبر من 100 في المصفوفة
});
console.log(result); // الناتج: undefined
📊 مقارنة سريعة بين طرق البحث
| الطريقة | الغرض الرئيسي | ما تعيده عند العثور | ما تعيده عند عدم العثور |
|---|---|---|---|
indexOf() |
البحث عن موقع قيمة محددة | رقم الفهرس | -1 |
includes() |
التحقق من وجود قيمة | true |
false |
find() |
البحث باستخدام شرط مخصص | العنصر نفسه | undefined |
🧪 تمرين عملي بسيط
جرب هذا الكود بنفسك في وحدة تحكم المتصفح (Console) أو في محرر الأكواد:
// مصفوفة تحتوي على أسماء بعض الحيوانات
let animals = ['Lion', 'Elephant', 'Giraffe', 'Tiger', 'Elephant'];
// 1. use indexOf() to find the first occurrence of 'Elephant'
// 2. use includes() to check if 'Tiger' exists
// 3. use find() to find the first animal that starts with 'G'
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال