حلقه for in در JavaScript
دستور for ... in در JavaScript
با استفاده از دستور for ... in در JavaScript، می توانید داخل خصوصیات یا propertyهای اشیاء مختلف حلقه بزنید.
شاید بدلیل اینکه هنوز درباره ی اشیاء صحبت نکرده ایم، فهم دقیق این نوع حلقه برای شما سخت باشد، اما زمانی که با بحث اشیاء در JavaScript آشنا شدید، خواهید فهمید که این نوع حلقه چقدر مفید است.
توجه: كدی كه در بدنه ی حلقه for … in قرار دارد، برای هر خصوصیت، یك بار اجرا می شود.
نحوه استفاده:
{
code to be executed
}
پارامترها
پارامتر | توضیحات |
---|---|
variable | الزامی است، با یک نام دلخواه تنظیم می شود و با استفاده از این متغیر، داخل خصوصیات یک شیء حلقه می زنیم. |
object | الزامی است، با نام شیء ای که می خواهیم داخل آن حلقه بزینم، تنظیم می شود. |
در هر بار تکرار حلقه، یکی از خصوصیت های شیء مورد نظر به variable انتساب داده می شود و این حلقه ادامه می یاد تا تمام خصوصیت های شیء مورد نظر انتساب یابند.
مثال 1
در مثال زیر، تمام خصوصیت های شیء Navigator چاپ خواهد شد. (خصوصیات شیء Navigator، اطلاعاتی در مورد مرورگر را برمی گردانند)
مثال (حلقه for in در JavaScript)
<script type="text/javascript"> <!-- var aProperty; document.write("Navigator Object Properties<br /> "); for (aProperty in navigator) { document.write(aProperty); document.write("<br />"); } document.write("Exiting from the loop!"); //--> </script>
مثال 2
در مثال زیر، یک شیء آرایه با نام person تعریف شده است، دستور (for (x in person تمام ایندکس های آرایه person را یکی یکی از ابتدایی تا انتهایی به درون x می ریزد و دستورات داخل حلقه را اجرا می نماید:
مثال (حلقه for in در JavaScript)
var txt="";
var person={fname:"John",lname:"Doe",age:25};
for (x in person)
{
txt=txt + person[x];
}
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 24906
دیدگاهها
سلام
تو مثال دوم..حلقه از کجا میفهمه باید jhon رو چاپ کنه و نه fname رو؟!
نمیدونم متوجه سوالم شدید یا نه...
منظورم اینه که چرا به ازای x ....جان چاپ میشه نه fname ?!
با سلام.
fname اندیس هست. در حلقه میگیم آرایه رو بر حسب تعداد خونه هایی که داره، یه دور پیمایش کنه. در اینجا x اندیسها آرایه است. و چون تعداد اندیس ها 3 تا هست. این حلقه 3 بار اجرا میشه.
بعدش اگر دقت کنید ما اینجا میخوایم مقادیر اندیسها چاپ بشه، نه خود اندیسها. مقدار هر اندیس در واقع خونه ای هست که اون آرایه در اندیس موردنظر داره.
کد زیر رو نگاه بندازید:
person[fname] = "john"; //comment
person[lname] = "Doe"; //comment
person[age] = 25; //comment
در حلقه ما اندیسها رو توسط x پیمایش میکنم و مقادیر اونها رو با person[x] //comment نشون میدیم. پس وقتی به fname میرسه، عبارت person[fname] //comment چاپ میشه.
به دو صورت می شود از حلقه for استفاده کرد؛شما فقط یک روششو گفتید که چندان کاربردی ندارد
لطفا درمورد روش دوم هم توضیح دهید .خیلی گیرم سر این قضیه
به نقل از امیرکیان:
ببخشید
فکر کنم در مثال دوم اگر تابع را کاربران به این صورت تغییر بدهند از خروجی آن خودشان به نتیجه و اتفاقات پی ببرنند
function myFunction()
{
var x;
var txt="";
var person={fname:" John",lname:"Do e",age:25};
for (x in person)
{
document.write(x+"");
var txt="";
txt=txt + person[x];
document.write(txt+"");
}
}
در آموزش حلقه ها به این موضوع پرداختیم.
نکته: حلقهfor in مانند foreach عمل می کند.
شکل یک حلقه ی for به صورت زیر است:
for (init; condition; increment)
{
code to be executed
}
مثال:
<script type="text/javascript">
var i=0;
for (i=0;i<=5;i++)
{
document.write("The number is " + i);
document.write("<br />");
}
</script>
من متوجه یه چیزی نمیشم متغییر txt اینجا چه کاری انجام میده؟
از آنجایی که متغیرها در جاوا اسکریپت نوع خاصی ندارند بهتر است بگوییم متغیر txt در این مثال از نوع رشته است.
متغیر person در اینجا یک آرایه است. با حرکت روی عناصر آرایه در حلقه ی for in این عناصر یکی یکی به رشته ی txt اضافه شده است.
دستور پیچیده ای نیست!. فقط توی مثال 1 نفهمیدم این همه اسم توی خروجی از کجا اومد؟؟؟!!!
همان طور که در توضیح مثال گفته شده است، کلمات چاپ شده، خصوصیت های شیء Navigator اند.
سلام ممنون از سایت خوبتون
ولی یه خواهش این توضیحات خیلی کمه دستور for in نیاز به توضیحات بیشتری داره خیلی پیچیده است من هیچی متوجه نشدم لطفا توضیحات رو بیشتر کنید
سلام، چشم ...!
ببخشيد راجبه دستور for...in بيشتر توضيح بديد....يكم پيچيدست....
در مثال بالا، دستور (for (x in person تمام ایندکس های آرایه person را یکی یکی از ابتدایی تا انتهایی به درون x می ریزد و دستورات داخل حلقه را اجرا می نماید.
منظورتون از آرایه چیه؟ انگلیسیش چی میشه؟ variable؟
با سلام به "آموزش JS-آرایه ها" مراجعه کنید، برا این کار از لینک زیر استفاده کنید:
www.beyamooz.com/javascript/128-object/401-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%D9%87%D8%A7-%D8%AF%D8%B1-javascript