چهار روش برای حذف مقادیر آرایه در جاوا اسکریپت — به زبان ساده
آرایه یک نوع داده مرتب است که چندین مقدار را ذخیره میکند. معنی این حرف آن است که هر آیتم در آرایه یک شناسه عددی دارد که اندیس نامیده میشود و از آن برای اشاره به مکان مقدار در آرایه استفاده میشود. در این مقاله با روشهای مختلف حذف مقادیر آرایه در جاوا اسکریپت آشنا میشویم.
آرایهها از اندیس 0 آغاز میشوند و برای هر مقدار 1 واحد افزایش مییابند. برای اشاره به یک مقدار در آرایه باید از اندیس مناسبی درون براکت ([]) استفاده کنیم.
1let numbers = [10,20,30,40];
2// print a value with an explicit index
3console.log(numbers[0]); # 10
4console.log(numbers[1]); # 20
5console.log(numbers[2]); # 30
6console.log(numbers[3]); # 40
7// alternatively, use a for loop
8for(let i=0; i<numbers.length; i++) {
9 console.log(numbers[i]);
10}
برای حذف مقداری از آرایه چهار روش وجود دارد که هر کدام کاربرد خاص خود را دارند. این روشها را در ادامه توضیح میدهیم. توجه کنید که هر چهار روش مورد بررسی به صورت بومی با استفاده از جاوا اسکریپت قابل اجرا هستند و نیازی به ایمپورت کردن هیچ کتابخانه اضافی وجود ندارد.
کلیدواژه Delete
سادهترین روش برای حذف مقداری از آرایه استفاده از کلیدواژه Delete است.
در این حالت کافی است از نام متغیر همراه با اندیسی که میخواهید پاک شود استفاده کنید:
1let numbers = [1,2,3,4];
2delete numbers[1];
3console.log(numbers); // [1, undefined, 3, 4]
با این حال در زمان استفاده از این روش باید مراقب باشید، زیرا گرچه این متد ساده به نظر میرسد، اما در اغلب موارد موجب بروز سردرگمی میشود، زیرا آرایه در نهایت با یک حفره مواجه میشود. مواردی که تکنیک Delete به کار نمیآید، زمانی است که پس از حذف یک مقدار از آرایه نیاز به اندیسگذاری مجدد آن وجود دارد.
متد ()pop.
اگر میخواهید مقدار دارای بزرگترین اندیس را از آرایه حذف کنید و نمیخواهید مجبور به اندیسگذاری مجدد آرایه شوید تا در انتهای آرایه اندیس تعریفنشده پاک شود، میتوانید از متد ()pop بهره بگیرید:
1let numbers = [1,2,3,4];
2numbers.pop();
3console.log(numbers); // [1,2,3]
متد ()splice.
اگر میخواهید به جای حذف یک اندیس خاص، مقدار به خصوصی را از آرایه حذف کنید، میتوانید از این متد کمک بگیرید. در این حالت اگر مشکلی با اندیسگذاری مجدد آرایه ندارید میتوانید با خیال راحت از متد ()splice. استفاده کنید.
در زمان استفاده از این متد یک آرایه جدید ایجاد میشود که تعدادی از مقادیر را حذف میکند. به صورت پیشفرض حذف از اندیس خاص تعیینشده آغاز شده و همه موارد سمت راست آن را شامل میشود.
1let numbers = [1,2,3,4];
2numbers.splice(2);
3console.log(numbers); // [1,2]
اگر تنها میخواهید یک مقدار را حذف کنید، از پارامتر اختیاری دوم در متد ()splice. استفاده کنید:
1let numbers = [1,2,3,4];
2numbers.splice(2,1);
3console.log(numbers); // [1,2,4]
توجه کنید که ما نتیجه splice را سریعاً پرینت نمیکنیم. چون در این صورت مقادیر حذفشده از سوی متد نیز بازگشت مییابند.
1let numbers = [1,2,3,4];
2console.log(numbers.splice(2,1)); // [3]
این روشی عالی است، اما در دنیای واقعی امکان هاردکد کردن مقدار اندیس وجود ندارد. بنابراین از متد ()indexOf. برای یافتن اندیس یک مقدار بر اساس شرط خاص استفاده میکنیم.
1// delete the value 3 from the array
2let numbers = [1,2,3,4];
3i = numbers.indexOf(3);
4if(i >= 0) {
5 numbers.splice(i,1);
6}
7console.log(numbers); // [1,2,4]
شرط if در مثال کد فوق برای تأیید این که مقدار مورد نظر را در آرایه یافتهایم مورد استفاده قرار میگیرد. متد ()indexOf در مواردی که مقدار را نیابد، مقدار 1- بازگشت میدهد. از این رو اگر i بزرگتر یا مساوی 0 باشد، مقدار مورد نظر در آرایه پیدا شده است.
متد ()filter.
با این که متد ()splice. برای یافتن و حذف یک مقدار منفرد کارآمد است، اما برخی اوقات میخواهیم همه موارد رخداد یک مقدار (یا شرط) را از آرایه پاک کنیم. در چنین حالتهایی میتوانیم از متد ()filter. بهره بگیریم.
این متد یک تابع به عنوان آرگومان میگیرد و مقادیری را نگه میدارد که در تابع فیلتر به صورت true ارزیابی میشوند. برای فیلتر کردن یک مقدار خاص باید حالت منفی را نیز بررسی کنیم:
1let numbers = [1,2,3,4];
2numbers = numbers.filter((n) => {return n != 3});
3console.log(numbers); // [1,2,4]
توجه کنید که ما باید اعداد را به خودشان مجدداً انتساب دهیم. دلیل آن این است که برخلاف متد ()splice، متد ()filter به جای اجرای یک اکشن روی دادههای اصلی، یک آرایه جدید بازگشت میدهد.
سخن پایانی
در این مقاله چهار روش برای حذف مقادیر از آرایههای جاوا اسکریپت معرفی کردیم، البته اینها همه مواردی که برای حذف مقادیر از آرایه استفاده میشود نیستند. اما به هر حال برای آشنایی با روشهای دستکاری آرایه و حذف مقادیر مفید هستند.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای JavaScript (جاوا اسکریپت)
- مجموعه آموزشهای برنامهنویسی
- آموزش JavaScript ES6 (جاوا اسکریپت)
- معرفی جاوا اسکریپت ناهمگام — به زبان ساده
- ۶ متد آرایه جاوا اسکریپت برای کدنویسی بهینهتر — راهنمای کاربردی
==
عالی و کاربردی
خیلی عالی بود
متشکرم