در این قسمت از مقالات طراحی سایت در بخش آموزش جاوا اسکریپت می خواهیم حلقه for-in در جاوا اسکریپت را توضیح دهیم .
از حلقه for-in در جاوا اسکریپت برای حرکت در درون اعضا یک آرایه یا مجموعه خواص یک شی استفاده می شود . به ازای خواندن هر يک از اعضا آرايه يا يکی از خواص شی مورد نظر ، يکبار دستورات درون حلقه اجرا خواهد شد .
تعداد دفعات تکرار دستورات حلقه ، برابر با تعداد اعضای آرايه و يا تعداد خواص شی مورد نظر است . در اين حلقه معمولا از يک متغير به عنوان شمارنده يا انديس آرايه استفاده می شود .
شکل کلی تعريف يک حلقه for...in به صورت زير است :
for ( متغير in نام يک آرايه / مجموعه خواص يک شی )
{
دستورات بدنه حلقه
}
در مثال زیر یک آرایه با نام Lesson برای نگهداری نام دروس کامپیوتر با 5 عضو ایجاد و مقداردهی شده است و وظیفه ی حلقه for-in حرکت در درون اعضای آرایه Lesson و چاپ نام تک تک آن ها به عنوان خروجی است .
< script type="text/javascript" >
var n = 0 ;
var i = 1 ;
var Lessons = new Array( 5 ) ;
Lessons[0] = "HTML" ;
Lessons[1] = "CSS" ;
Lessons[2] = "Visual Basic" ;
Lessons[3] = "Java Script" ;
Lessons[4] = "ASP.NET" ;
for ( n in Lessons )
{
document.write ( "Lesson " + i + " = " + Lessons [n] + "<br / >") ;
i++ ;
}
< /script >
خروجی :
Lesson 1 = HTML
Lesson 2 = CSS
Lesson 3 = Visual Basic
Lesson 4 = Java Script
Lesson 5 = ASP.NET
فرض کنيد که در مثال بالا فقط می خواهيم نام دروسی از آرايه Lesson چاپ شود ، که شماره انديس آنها در آرایه زوج باشد . بنابراين در بدنه دستورات حلقه يک دستور continue با اين شرط که باقی مانده حاصل از تقسيم شماره انديس آرايه بر 2 برابر صفر نباشد را به قبل از دستور چاپ حلقه اضافه می کنيم . در اين صورت نام اعضايي از آرايه که شماره انديس آنها فرد است چاپ نمی شود و حلقه به انديس بعدی می رود :
< script type="text/javascript" >
var n = 0 ;
var i = 1 ;
var Lessons = new Array( 5 ) ;
Lessons[0] = "HTML" ;
Lessons[1] = "CSS" ;
Lessons[2] = "Visual Basic" ;
Lessons[3] = "Java Script" ;
Lessons[4] = "ASP.NET" ;
for ( n in Lessons )
{
if ( n % 2 != 0 ) continue ;
document.write ( "Lesson " + i + " = " + Lessons [n] + "<br / >") ;
i++ ;
}
< /script >
خروجی :
Lesson 1 = HTML
Lesson 2 = Visual Basic
Lesson 3 = ASP.NET