در حال بارگذاری...

جستجو در آرایه

کشو stamps سه مهر دارد، اول oak و بعد elm و دوباره oak، و اندازهٔ همین صفحه قفل می‌ماند چون به‌جای سر زدن به تک‌تک خانه‌ها فقط دنبال یک مقدار می‌گردی.

نام مهر را بپرس

صفحهٔ قبل با forEach به هر آهنگ سر زد و خودِ آن صدا undefined بود. اینجا فقط اسم یک مهر را می‌آوری و کشو نه بزرگ می‌شود نه کوچک.

چهار جور جواب

قبل از خواندن عدد ببین چه شکلی از جواب لازم داری. متد را از روی همان شکل انتخاب کن.

📊 هر جستجو چه برمی‌گرداند

متد پرسش چه می‌آید اگر نباشد
indexOf خانهٔ اولین تطابق یک اندیس -1
lastIndexOf خانهٔ آخرین تطابق یک اندیس -1
includes آیا این مقدار هست true یا false false
find قلمی که شرطش درست است خودِ قلم undefined

شمارهٔ خانه از indexOf و lastIndexOf می‌آید، ولی includes و find شماره نمی‌دهند و جوابشان جور دیگری است.

مهر جلویی

بپرس اولین oak در کدام خانه نشسته. توقع عدد صفر را داشته باش.

اولین oak

javascript
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("oak");
console.log(slot);

لاگ صفر است و oak عقبی در این نتیجه دیده نمی‌شود.

pine که نیست

javascript
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("pine");
console.log(slot);
console.log(stamps.length);

pine از اول داخل کشو نبوده و لاگ منفی یک است. طول هنوز ۳ می‌ماند، پس پیدا نشدن به معنی حذف یک مهر نیست.

oak عقبی

javascript
let stamps = ["oak", "elm", "oak"];
let slot = stamps.lastIndexOf("oak");
console.log(slot);

لاگ ۲ است، یعنی همان oak که ته کشو نشسته نه مهری که جلو است.

بله یا خیر

javascript
let stamps = ["oak", "elm", "oak"];
console.log(stamps.includes("elm"));
console.log(stamps.includes("pine"));

برای elm مقدار true چاپ می‌شود. برای pine مقدار false می‌آید. این false را با -1 یکی نگیر.

خودِ مهر

javascript
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 را در پاراگراف بگذار.

دموی صفحه — خانه یا missing

html
<!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>

پاراگراف عدد ۰ را نشان می‌دهد. عبارت جستجو را به pine عوض کن و صفحه را تازه کن. آن‌وقت کلمهٔ missing را می‌بینی.

خودت بگرد

همین شش کار را روی همان کشو انجام بده.

  1. اولین خانهٔ oak را لاگ کن و صفر را انتظار داشته باش
  2. جستجوی pine را لاگ کن و منفی یک را ببین در حالی که طول ۳ می‌ماند
  3. آخرین خانهٔ oak را لاگ کن و ۲ را انتظار داشته باش
  4. بودن elm و بودن pine را جدا لاگ کن
  5. elm را با find پیدا کن و pine را هم بگذار کنار undefined
  6. پاراگراف را بخوان، جستجو را pine کن و صفحه را تازه کن

قاطی‌های رایج

این شش مورد را یکی نگیر.

  • منفی یک را خانهٔ قابل خواندن حساب نکن
  • true و false را مثل شمارهٔ خانه نخوان
  • توقع نداشته باش find برای elm عدد ۱ بدهد
  • وقتی فقط بله یا خیر می‌خواهی سراغ forEach نرو
  • نوع دیگر یا تفاوت حروف بزرگ و کوچک را تطابق حساب نکن
  • با if (slot) موفقیت را نسنج چون صفر یک خانهٔ درست است

این فرق‌ها بماند

این‌ها را از هم جدا نگه دار.

  • اولین تطابق یا منفی یک کار indexOf است
  • آخرین تطابق یا منفی یک کار lastIndexOf است
  • بله یا خیر کار includes است
  • خودِ مهر یا undefined کار find است
  • پیدا نشدن طول را عوض نمی‌کند
  • صفحهٔ بعد تاریخ و زمان است

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
8
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود