جستجو در آرایه
کشو 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);
لاگ صفر است و oak عقبی در این نتیجه دیده نمیشود.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.indexOf("pine");
console.log(slot);
console.log(stamps.length);
pine از اول داخل کشو نبوده و لاگ منفی یک است. طول هنوز ۳ میماند، پس پیدا نشدن به معنی حذف یک مهر نیست.
let stamps = ["oak", "elm", "oak"];
let slot = stamps.lastIndexOf("oak");
console.log(slot);
لاگ ۲ است، یعنی همان oak که ته کشو نشسته نه مهری که جلو است.
let stamps = ["oak", "elm", "oak"];
console.log(stamps.includes("elm"));
console.log(stamps.includes("pine"));
برای elm مقدار true چاپ میشود. برای pine مقدار false میآید. این 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>
پاراگراف عدد ۰ را نشان میدهد. عبارت جستجو را به pine عوض کن و صفحه را تازه کن. آنوقت کلمهٔ missing را میبینی.
خودت بگرد
همین شش کار را روی همان کشو انجام بده.
- اولین خانهٔ oak را لاگ کن و صفر را انتظار داشته باش
- جستجوی pine را لاگ کن و منفی یک را ببین در حالی که طول ۳ میماند
- آخرین خانهٔ oak را لاگ کن و ۲ را انتظار داشته باش
- بودن elm و بودن pine را جدا لاگ کن
- elm را با find پیدا کن و pine را هم بگذار کنار undefined
- پاراگراف را بخوان، جستجو را pine کن و صفحه را تازه کن
قاطیهای رایج
این شش مورد را یکی نگیر.
- منفی یک را خانهٔ قابل خواندن حساب نکن
- true و false را مثل شمارهٔ خانه نخوان
- توقع نداشته باش find برای elm عدد ۱ بدهد
- وقتی فقط بله یا خیر میخواهی سراغ forEach نرو
- نوع دیگر یا تفاوت حروف بزرگ و کوچک را تطابق حساب نکن
- با if (slot) موفقیت را نسنج چون صفر یک خانهٔ درست است
این فرقها بماند
اینها را از هم جدا نگه دار.
- اولین تطابق یا منفی یک کار indexOf است
- آخرین تطابق یا منفی یک کار lastIndexOf است
- بله یا خیر کار includes است
- خودِ مهر یا undefined کار find است
- پیدا نشدن طول را عوض نمیکند
- صفحهٔ بعد تاریخ و زمان است
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود