البحث في المصفوفة
يحفظ stamps ثلاثة أختام، oak ثم elm ثم oak مرة أخرى، ويبقى حجم الدرج ثابتاً في هذه الصفحة لأنك تبحث عن قيمة واحدة بدل زيارة كل خانة.
اسأل عن الختم
في الصفحة السابقة زار forEach كل أغنية وعاد النداء نفسه undefined. هنا تسمّي ختماً واحداً والدرج لا يكبر ولا يصغر.
أربعة أشكال للجواب
قبل أن تقرأ رقماً حدّد شكل الجواب الذي تحتاجه. بعدها اختر الدالة وفق ذلك الشكل.
📊 ماذا يعيد كل بحث
| الدالة | السؤال | ما يعود | عند الغياب |
|---|---|---|---|
indexOf |
خانة أول تطابق | فهرس | -1 |
lastIndexOf |
خانة آخر تطابق | فهرس | -1 |
includes |
هل القيمة موجودة | true أو false |
false |
find |
العنصر الذي يصدق شرطه | العنصر نفسه | undefined |
أرقام الخانات تأتي من indexOf وlastIndexOf، أما includes وfind فلا يعيدان رقم خانة.
الختم الأمامي
اسأل أين يجلس أول oak. توقّع الرقم صفر.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("oak");
console.log(slot);
يظهر في السجل 0 ولا يدخل oak الثاني في هذه النتيجة.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("pine");
console.log(slot);
console.log(stamps.length);
pine لم يُخزَّن أصلاً ويظهر في السجل -1. يبقى الطول 3، فالغياب ليس حذفاً لختم.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.lastIndexOf("oak");
console.log(slot);
يظهر في السجل 2، أي oak الذي في آخر الدرج لا الختم الأمامي.
let stamps = ["oak", "elm", "oak"];
console.log(stamps.includes("elm"));
console.log(stamps.includes("pine"));
تُطبع لـ elm القيمة true. تُطبع لـ pine القيمة false. هذه القيمة ليست -1.
let stamps = ["oak", "elm", "oak"];
let hit = stamps.find(function (name) {
return name === "elm";
});
console.log(hit);
let miss = stamps.find(function (name) {
return name === "pine";
});
console.log(miss);
السطر الأول هو النص elm والسطر الثاني undefined. الشرط الذي لم يمرّ على أي ختم ليس رقم خانة.
اكتب الخانة
حوّل خانة أول oak إلى نص، وإذا كان البحث -1 فأظهر الكلمة missing في الفقرة.
<!DOCTYPE html>
<html>
<head>
<title>array-search — page</title>
</head>
<body>
<p id="slot">…</p>
<script>
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("oak");
let line = "missing";
if (slot !== -1) {
line = String(slot);
}
let box = document.getElementById("slot");
box.textContent = line;
</script>
</body>
</html>
تُظهر الفقرة الرقم 0. غيّر عبارة البحث إلى pine ثم حدّث الصفحة. عندها ترى الكلمة missing.
جرّب بنفسك
نفّذ هذه الفحوص الستة على الدرج نفسه.
- سجّل خانة أول oak وتوقّع 0
- سجّل بحث pine وتوقّع -1 مع بقاء الطول 3
- سجّل خانة آخر oak وتوقّع 2
- سجّل هل elm موجود وهل pine موجود
- جد elm ثم pine وقارن النص مع undefined
- اقرأ الفقرة وابحث عن pine ثم حدّث الصفحة
خلط شائع
لا تجمع هذه الحالات في قراءة واحدة.
- لا تعامل -1 كخانة يمكن قراءتها
- لا تقرأ true أو false كأنها فهرس
- لا تتوقع أن يعيد find الرقم 1 مقابل elm
- لا تلجأ إلى forEach حين يكفيك نعم أو لا
- لا تعدّ اختلافاً في النوع أو في حالة الحرف تطابقاً
- لا تختبر النجاح بـ if (slot) لأن الصفر إصابة حقيقية
ما يبقى معك
أبقِ هذه الفروق منفصلة.
- أول تطابق أو -1 يأتي من indexOf
- آخر تطابق أو -1 يأتي من lastIndexOf
- نعم أو لا يأتي من includes
- الختم نفسه أو undefined يأتي من find
- الغياب لا يغيّر الطول
- الصفحة التالية عن التاريخ والوقت
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى