متدهای آرایه
درس قبل اگر خانهای را بازنویسی میکردی، تعداد رنگها سر جایش میماند. این صفحه سبد خرید است، با نان و شیر و تخممرغ. اینجا صدای متد مجاز است تعداد قلمها را زیاد یا کم کند.
تعداد مجاز است تکان بخورد
این پنج صدا همان آرایهای را که در دست داری عوض میکنند، نه رشتهٔ تازهای مثل متدهای متن و نه تابعی که خودت روی آبجکت ذخیره کرده باشی. push و pop و unshift و shift و splice ابزار آمادهٔ خودِ فهرستاند.
پنج صدا روی یک کارت
کارت را دمِ دستِ نمونهها بگذار تا هر بار به بالا برنگردی. خیلی وقتها چیزی که از صدا برمیگردد خودِ سبد نیست. یا عدد است، یا قلمی که رفته، یا یک آرایهٔ کوچک.
📊 پنج صدای آرایه
| صدا | کجا کار میکند | چه برمیگردد | length |
|---|---|---|---|
push |
ته | طول تازه | به تعداد قلمهایی که دادی رشد میکند |
pop |
ته | قلم حذفشده | یکی کم میشود |
unshift |
سر | طول تازه | به تعداد قلمهایی که دادی رشد میکند |
shift |
سر | قلم حذفشده | یکی کم میشود |
splice |
اندیسی که خودت انتخاب میکنی | آرایهٔ کوچکِ حذفشدهها | به اندازهٔ تعداد حذف کم میشود |
صداهایی که قلم اضافه میکنند طول تازه را به صورت عدد پس میدهند، و صداهایی که از سر یا ته برمیدارند خودِ همان قلم را. splice حتی برای حذف یک خانه هم آرایهٔ کوچکی برمیگرداند و کلمه داخل اندیس صفرِ همان نتیجه نشسته است.
چای ته سبد
سبد با نان و شیر و تخممرغ شروع میشود. push چای را بعد از تخممرغ میگذارد. عددی که همان لحظه میشنوی، تعداد خانههای الان است.
let cart = ["bread", "milk", "eggs"];
let n = cart.push("tea");
console.log(n);
console.log(cart[3]);
console.log(cart.length);
n برابر ۴ است، یعنی طول تازه نه خودِ tea. اندیس ۳ چای را نگه میدارد و length هم ۴ است چون فقط یک قلم به ته اضافه شده. دو آرگومان یعنی دو خانه رشد. اینجا یک آرگومان میدهیم تا خواندن عدد ساده بماند.
let cart = ["bread", "milk", "eggs"];
let gone = cart.pop();
console.log(gone);
console.log(cart.length);
آخرین قلم میرود
pop تخممرغ را از ته برمیدارد و همان رشته را به دستت میدهد، و length میشود ۲. سبد میماند نان و بعد شیر. این صدا طول تازه را پس نمیدهد. اگر سبد خالی باشد undefined میآید و نمونههای این صفحه از خالی شروع نمیکنند.
let cart = ["bread", "milk", "eggs"];
let n = cart.unshift("tea");
console.log(n);
console.log(cart[0]);
console.log(cart[1]);
جلوی صف تازه میشود
unshift هم ۴ برمیگرداند چون طول تازه است، و اندیس صفر حالا چای است. نان بیآنکه بازنویسی شود به اندیس ۱ میرود. هر قلم قدیمی یک قدم به سمت ته سبد سر میخورد.
let cart = ["bread", "milk", "eggs"];
let gone = cart.shift();
console.log(gone);
console.log(cart[0]);
console.log(cart.length);
سر صف خالی میشود
shift نان را برمیگرداند، یعنی قلمی که رفته نه یک طول. بعد از آن اندیس صفر شیر است و length برابر ۲. تخممرغ هنوز آخر است. فقط جایش شده اندیس ۱.
let cart = ["bread", "milk", "eggs"];
let removed = cart.splice(1, 1);
console.log(removed[0]);
console.log(cart.length);
console.log(cart[1]);
خانهای که خودت انتخاب کردی
آرگومان اول اندیس شروع است و دومی میگوید چند خانه حذف شود. شیر میرود و removed آرایهای یکخانه است، پس removed[0] شیر است نه اینکه خودِ صدا رشتهٔ شیر باشد. length میشود ۲ و اندیس ۱ تخممرغ است، چون نان سر جا مانده و تخممرغ جای خالی را بسته. اگر تعداد حذف را ۰ بگذاری بدون حذف درج میشود. آن شکل را فعلاً کنار بگذار.
صفحه طول تازه را چاپ میکند
چای را با push اضافه کن. بعد length را در پاراگراف بنویس. خط باید تعداد باشد نه فهرست خرید.
<!DOCTYPE html>
<html>
<head>
<title>array-methods — page</title>
</head>
<body>
<p id="line">…</p>
<script>
let cart = ["bread", "milk", "eggs"];
cart.push("tea");
let box = document.getElementById("line");
box.textContent = cart.length;
</script>
</body>
</html>
پاراگراف عدد ۴ را نشان میدهد. رشتهٔ اضافهشده را از چای به مربا عوض کن و صفحه را تازه کن؛ خط همان ۴ میماند چون باز هم یک قلم اضافه شده. کلمه عوض شده و تعداد نه. نان و شیر و تخممرغ جلوی هر چه push کردهای میمانند.
روی سبد تازه کار کن
- چای را با
pushته نان و شیر و تخممرغ بگذار و هم عدد برگشتی را بخوان هم اندیس ۳ را. - یک بار
popکن و هم کلمهٔ حذفشده را بخوان هم طول تازه را، بعد باunshiftچای را جلو بگذار و اندیس ۰ و ۱ را ببین. - یک بار
shiftکن و کلمهٔ رفته را با اندیس صفرِ تازه بخوان، بعدspliceرا روی اندیس ۱ با حذف یک خانه بزن وremoved[0]را کنار طول بگذار. - روی صفحه چای را
pushکن، تازه کن، خط را بخوان، بعد چای را مربا کن و دوباره تازه کن.
جاهایی که نمره کم میشود
- وقتی میخواستی خانه اضافه کنی نوشتی
cart[1] = "tea"، یا پرانتزpushوpopرا جا انداختی - مقدار برگشتی
popرا طول تازه فرض کردی - انتظار داشتی
spliceخودِ رشتهٔ شیر را بدهد نه یک آرایه - فکر کردی بعد از
unshiftاندیس صفر هنوز نان است، یا همین صفحه را با پیمایش همهقلم و جستوجوی مقدار قاطی کردی
اینها بماند
- این صداها همان آرایه را دستکاری میکنند
pushوunshiftطول تازه را برمیگردانند وpopوshiftقلمِ رفته راspliceآرایهٔ کوچکی از حذفشدهها میدهد- پاراگراف میتواند بعد از
pushفقط طول را نشان دهد - درس بعد پیمایش آرایه است و جستجو در آرایه بعد از آن میآید
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود