با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، در بخش های قبلی مباحث تعریف و کار با انواع آرایه ها را در جاوااسکریپت بررسی کردیم، آرایه ها به عنوان ظرفی برای نگهداری یک سری مقادیر هم نوع به صورت موقت، در تمام زبان های برنامه نویسی استفاده می شوند. در اکثر موارد برای انجام عملیاتی روی مقادیر آرایه ها، نیاز داریم که عملیات مورد نظر روی تک تک عناصر آرایه اجرا شود، برای اینگونه موارد متدهای تکرار آرایه در جاوااسکریپت ارائه شده است که ما در ادامه ی این مبحث آن را بررسی خواهیم کرد.
در ادامه ی این آموزش شما را با متدهای تکرار آرایه در جاوااسکریپت و عملکرد هر یک آشنا خواهیم کرد.
متد ()forEach یک تابع را روی هر یک از عناصر آرایه فراخوانی می کند.
1 2 3 4 5 6 7 | var txt = ""; var numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); function myFunction(value, index, array) { txt = txt + value + "<br>"; } |
دقت داشته باشید که یک تابع سه آرگومان می گیرد :
در مثال فوق فقط از پارامتر value (مقدار) استفاده شده است،مانند مثال زیر:
1 2 3 4 5 6 7 | var txt = ""; var numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); function myFunction(value) { txt = txt + value + "<br>"; } |
متد () forEach. در مرورگرهای زیر پشتیبانی می شود :
متد ()map با انجام یک تابع در هر عنصر آرایه یک آرایه جدید ایجاد می کند.
متد ()map تابع عناصر آرایه بدون مقادیر را اجرا نمی کند.
متد ()map آرایه اصلی را تغییر نمی دهد.
این مثال تعداد هر مقدار آرایه را ۲ برابر می کند:
1 2 3 4 5 6 | var numbers1 = [45, 4, 9, 16, 25]; var numbers2 = numbers1.map(myFunction); function myFunction(value, index, array) { return value * 2; } |
وقتی که در فراخوانی یک تابع فقط از پارامتر مقدار استفاده می شود، پارامترهای index و آرایه می توانند حذف شوند:
1 2 3 4 5 6 | var numbers1 = [45, 4, 9, 16, 25]; var numbers2 = numbers1.map(myFunction); function myFunction(value) { return value * 2; } |
متد ()map بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
متد ()filter یک آرایه جدید با عناصر آرایه ایجاد می کند که تست می شود.
این مثال یک آرایه جدید از عناصر با مقدار بزرگتر از ۱۸ ایجاد می کند:
1 2 3 4 5 6 | var numbers = [45, 4, 9, 16, 25]; var over18 = numbers.filter(myFunction); function myFunction(value, index, array) { return value > 18; } |
در مثال بالا، در فراخوانی تابع، از پارامترهای index و آرایه استفاده نمی شود، بنابراین می توان آنها را حذف کرد:
1 2 3 4 5 6 | var numbers = [45, 4, 9, 16, 25]; var over18 = numbers.filter(myFunction); function myFunction(value) { return value > 18; } |
متد ()filter بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
متد () reduce یک تابع در هر عنصر آرایه برای تولید یک مقدار (کاهش آن) را اجرا می کند.
متد () reduce به ترتیب از چپ به راست در آرایه کار می کند.
نکته : متد () reduce آرایه اصلی را کاهش نمی دهد.
این مثال مجموع اعداد را در یک آرایه پیدا می کند:
1 2 3 4 5 6 | var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduce(myFunction); function myFunction(total, value, index, array) { return total + value; } |
مثال فوق از پارامترهای index و array استفاده نمی کند. می توان آن را بازنویسی کرد:
1 2 3 4 5 6 | var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduce(myFunction); function myFunction(total, value) { return total + value; } |
متد () reduce می تواند یک مقدار خاص را بپذیرد :
1 2 3 4 5 6 | var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduce(myFunction, 100); function myFunction(total, value) { return total + value; } |
متد ()reduce بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
متد () costRight یک تابع در هر عنصر آرایه برای تولید یک مقدار (کاهش آن) را اجرا می کند.
متد () reduceRight از آرشیو راست به چپ کار می کند. همچنین مشاهده کنید.
نکته : متد ()reduceRight آرایه ی اصلی را حذف نمی کند.
مثال زیر مجموع اعداد را در یک آرایه محاسبه می کند :
1 2 3 4 5 6 | var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduceRight(myFunction); function myFunction(total, value, index, array) { return total + value; } |
مثال فوق از پارامترهای index و array استفاده نمی کند. می توان آن را بصورت زیر نوشت:
1 2 3 4 5 6 | var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduceRight(myFunction); function myFunction(total, value) { return total + value; } |
متد ()reduce بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
متد every() بررسی می کند که آیا تمام مقادیر آرایه یک تست را تحویل می دهند.
این مثال اینکه تمام مقادیر آرایه بزرگتر از ۱۸ باشد را بررسی می کند:
1 2 3 4 5 6 | var numbers = [45, 4, 9, 16, 25]; var allOver18 = numbers.every(myFunction); function myFunction(value, index, array) { return value > 18; } |
هنگامی که فراخوانی تابع با استفاده از پارامتر اول تنها (value)، پارامترهای دیگر را می توان حذف کرد:
1 2 3 4 5 6 | var numbers = [45, 4, 9, 16, 25]; var allOver18 = numbers.every(myFunction); function myFunction(value) { return value > 18; } |
متد ()every بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
متد () some بررسی می کند که آیا برخی از مقادیر آرایه یک تست را تحویل می دهند.
این مثال اینکه تمام مقادیر آرایه بزرگتر از ۱۸ باشد را بررسی می کند:
1 2 3 4 5 6 | var numbers = [45, 4, 9, 16, 25]; var someOver18 = numbers.some(myFunction); function myFunction(value, index, array) { return value > 18; } |
متد () some بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
یک آرایه را برای یک مقدار عنصر جستجو کرده و موقعیت آن را بازمی گرداند.
نکته : اولین آیتم موقعیت ۰، آیتم دوم دارای موقعیت ۱ و… است.
1 2 | var fruits = ["Apple", "Orange", "Apple", "Mango"]; var a = fruits.indexOf("Apple"); |
متد ()indexOf بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
سینتکس
1 | array.indexOf(item, start) |
item | ضروری ، شروع جستجو را مشخص می کند. |
start | اختیاری ، انتهای جستجو را مشخص می کند. |
اگر در متد ()indexOf مقداری پیدا نشود، -۱ بازگردانده می شود.
اگر آیتم موجود بیش از یک بار موجود باشد، موقعیت اولین رخداد را نشان می دهد.
عملکرد()lastIndexOf همانند ()indexOf عمل می کند اما با این تفاوت که از انتهای رشته جستجو می کند.
1 2 | var fruits = ["Apple", "Orange", "Apple", "Mango"]; var a = fruits.lastIndexOf("Apple"); |
متد ()indexOf بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
سینتکس
1 | array.lastIndexOf(item, start) |
item | ضروری ، شروع جستجو را مشخص می کند. |
start | اختیاری ، انتهای جستجو را مشخص می کند. |
متد () find مقدار عنصر آرایه اول را که یک تست را می گذراند، باز میگرداند.
این مثال (عدد اول را باز می کند) عنصر اول که بزرگتر از ۱۸ است را برمی گرداند:
1 2 3 4 5 6 | var numbers = [4, 9, 16, 25, 29]; var first = numbers.find(myFunction); function myFunction(value, index, array) { return value > 18; } |
متد ()indexOf بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
متد ()findIndex بجز در مرورگرهای Internet Explorer 8 و قدیمی تر در تمام مروگرهای دیگر پشتیبانی می شود.
1 2 3 4 5 6 | var numbers = [4, 9, 16, 25, 29]; var first = numbers.findIndex(myFunction); function myFunction(value, index, array) { return value > 18; } |
در اکثر مواقع برای انجام عملیاتی روی مقادیر مختلف آرایه ها، نیاز داریم یک عملیات روی تک تک عناصر آرایه اجرا شود، برای اینگونه موارد متدهای تکرار آرایه در جاوااسکریپت ارائه شده است، که چگونگی کار با آن در مباحث فوق بررسی گردید.