campaign-edianeh-98

دوره مجازی جاوااسکریپت (جلسه 6): آرایه ها، اشیاء ، ساختارهای کنترلی و حلقه ها



visibility  
mode_comment   ۵۹

در جلسه امروز به بحث مهم نحوه استفاده از آرایه ها و اشیاء در زبان جاوااسکریپت خواهیم پرداخت و بعد از اون ساختارهای کنترلی و حلقه ها در جاوا اسکریپت رو آموزش میدیم و با همدیگه مثال های استفاده از این ساختار ها رو خواهیم داشت . در انتها هم در مورد آرایه های دو و چند بعدی و نحوه پردازش اونها در حلقه ها صحبت خواهیم کرد .

مطالب مطرح شده در این جلسه عبارتند از :

  •  آشنایی به آرایه ها، ایندکس ها و مقادیر آنان
  • آشنایی به نحوه استفاده، تغیر و اضافه و حذف کردن عناصر آرایه
  • آرایه های دو بعدی و سه بعدی
  • آشنایی با اشیاء، ویژگی ها و متدها
  • نحوه استفاده از متد ها و ویژگی های اشیاء در جاوااسکریپت
  • ساختار های کنترلی و حلقه های مختلف در جاوااسکریپت
  • حلقه while و نحوه استفاده از آن
  • توضیح در مورد ساختار حلقه و لزوم برقراری شرط پایان حلقه
  • حلقه do..while و نحوه استفاده از آن
  • تفاوت حلقه های  while و do..while
  • حلقه for و نحوه استفاده از آن
  • نحوه تبدیل کدهای حلقه while به معادل for آن
  • حلقه for..in و پیمایش آرایه ها و اشیاء با آن
  • آشنایی با دستور break و وظیفه آن
  • آشنایی با دستور continue و کاربرد آن
  • کدنویسی و ذکر مثال هایی از حلقه های مختلف
  • مینی پروژه : چاپ اعضای آرایه ی دو بعدی با ظاهری مناسب
info توجه

این مطلب یک جلسه از آموزش جاوا اسکریپت از مبتدی تا پیشرفته می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش جاوا اسکریپت از مبتدی تا پیشرفته

comment دیدگاه کاربران
سعید replyپاسخ


خسته نباشید استاد
تشکر ❓ ❓

لقمان آوند

سلامت باشی
ممنون

hassani replyپاسخ

سلام من تمرین اول رو به این صورت اجرا کردم:

hassani

سلام
آقای آوند این جلسه هم خیلی خوب بود فقط دو تمرینی که در آخر ذکر کردید رو من هر کاری کردم نتونستم پیاده کنم.منظورم جمع اعضای آرایه های داخلی با هم و نمایش آنها و همچنین میانگین اعضای آرایه ها هست.اگه میشه راهنمایی کنین.
ممنونم 🙁 🙁 🙁

hassani

ببخشید جلسه هفتم رو که دیدم فهمیدم باید چیکار کنم البته برای جمع اعضای آرای های دو بعدی و میانگینشون هم امتحان کردم.به صورت زیر:

لقمان آوند

خوبه که تمرینا رو انجام میدی …
موفق باشی

hassani

معتقدم تا کدنویسی رو در عمل تجربه نکنی و نتیجش رو نبینی نمیشه مهارت لازم رو پیدا کرد.
تشکر و خسته نباشید.

لقمان آوند

بله همینطور هست و اگر به همین شکل ادامه بدید قطعا موفق خواهید شد

hassani

آقای آوند برای استفاده از حلقه ها اختیار با خودمونه و میشه همیشه از یه نوع حلقه استفاده کنیم؟
یعنی مثلا حلقه for میتونه نیازهای ما رو در همه بخش ها تامین کنه؟

لقمان آوند

سلام
بله . منتهی در هر جایی ممکنه یه حلقه خاص راحتتر باشه استفادش !
ولی در نهایت مختارید و for می تونه همه رو انجام بده .

bahman azari replyپاسخ

سلام استاد خسته نباشید، فقط ذکر این نکته که هنگام توضیح ساختار کنترلی for in در اسلاید پاورپوینت برای شی فرمودین از دستور object.i استفاده بشه که اشتباه شد.برای چاپ مقادیر اشیا نیز باید از علامت براکت استفاده کرد.یعنی به شکل زیر :

که به صورت زیر شکل نادرست اون هست و مقادیر undefined رو بر میگردونه:

لقمان آوند

بله جناب آذری. احتمالا با دسترسی مستقیم به پراپرتی های اشیاء اشتباهی چنین چیزی گفتم . وگرنه دسترسی به . ویژگی ها با حلقه for in باید شبیه همون ارایه ها باشه.
ممنون از مورد مهمی که گفتید. در جلسات آینده این مورد رو یاداور میشم .
سپاسگزارم .

bahman azari replyپاسخ

سلامی دوباره،استاد این دو تا دستور رو نگفتین:

for each…in statement


و
for…of statement


یا در ویدئو های آینده خواهید گفت؟ یا اصلا نیازی نیست به اینا؟این دو تا ساختار در همه مرورگرها پشتیبانی میشن؟

لقمان آوند

سلام
forEach که حلقه نیست و یه جور تابع هست که روی همه اعضای آرایه اعمال میشه. ضمن اینکه خیلی جاها پیشنهاد شده ازش استفاده نشه به خاطر همون بحث سازگاری. ضمن اینکه خیلی کندتر از حلقه for ساده هست! for..of هم در نسخه پیش نویس استاندارد بعدی (ECMAScript6) معرفی شده و استفاده ازش هنوز زوده …

Saman SoroushNia replyپاسخ

سلام و عرض ادب استاد

من تمرین این درس رو به این صورت در آوردم

لقمان آوند

بله کدتون اعداد فرد موجود در آرایه رو با حلقه های مختلف در 3 ضرب می کنه و درسته .
خوبه

ali ghollamnezhad replyپاسخ

سلام . میخواستم مقدار خروجی یک تابعی مثل getRandomColor() که درون فایل js قرارد دارد را درون خاصیت background-color قرار دهم ؟

لقمان آوند

اینکار در جلسات آینده انجام شده. بهش خواهید رسید …

Aria Banazadeh replyپاسخ

سلام تمیرن این جلسه رو به این صورت انجام دادم با تشکر

لقمان آوند

اگر خروجی درست بهتون میده خوبه. حسابی پیگیر هستید جناب بنازاده!

Aria Banazadeh

سپاسگذارم به علت علاقه ی زیاده

Aria Banazadeh replyپاسخ

سلام جواب تمرین میانگین ارایه های دو بعدی هم زدم ببینین درسته ؟

لقمان آوند

بله روشش همینه

Aria Banazadeh replyپاسخ

سلام اقای اوند ی سوال داشتم چه شکلی میشه یک عضو از یک ارایه رو حذف کرد ؟ برای حل تمرینی که دادین میخواستم بدونم با تشکر

لقمان آوند

پاسخ داده شده در اینجا رو بخونید.

Aria Banazadeh replyپاسخ

ببخشید زیاد سوال میکنم شما همیشه برای اینکه خروجی کدهاتونو ببینید ی فایل html درست میکنید ولی من میخوام مستقیم با ی فایل js بتونم خروجیو ببینم روشی هستش برای این کار؟؟

لقمان آوند

پیشنهاد می کنم run js file without browser رو تو گوگل سرچ کنید. راه هایی وجود داره …

داود دلورای replyپاسخ

سلام استاد چرا وقتی میخوام هرکدام از این آرایه ها رو ضرب در 10 کنم یه عدد با 13 تا صفر جلوش بهم تحویل میده؟

کیوان علی محمدی

سلام خط یکی به آخر رو دوباره چک کنید ایندکس ها رو اشتباه قرار دادین.

مقداد نجاتمند replyپاسخ

سلام
من با دستور print مشکل دارم
موقع اجرا، بجای نمایش مواردی که توسط print می نویسم، برنامه پرینت گرفتن پاپ آپ میشه ! مثل اینکه کلید Ctrl P رو زده باشم ! ممنون میشم راهنمایی کنید !

لقمان آوند

سلام
در جلسه 6 دوره js دلیل این مشکل و روش رفعش توضیح داده شده .

حامد نجاری replyپاسخ

سلام آقای آوند ؛ روزتون بخیر .
این تابع rand که توی فایل common.js تعریف کردیم ، به چه صورت کار میکنه ؟
من کدهاش رو خوندم ولی متوجه نشدم که چطوری عدد تصادفی رو برمیگردونه .

و همچنین چرا در آخر عدد آخری رو از عدد اولی کم میکنه ؟
با تشکر .

لقمان آوند

بعدا توابعش رو معرفی می کنیم و توضیح میدیم.
یه عدد رندم رو به عدد start اضافه می کنیم که باید بین 0 تا تفاضل end و start باشه . با این روش عدد نهایی بین start و end میشه.
وقتی به جلسه توضیح این توابع رسیدیم در موردش صحبت میشه.
فعلا فقط گفتیم اونا رو داشته باشیم که استفاده کنیم… بعدا کاملا شرح داده میشن.

حامد نجاری replyپاسخ

با سلام مجدد .
من یه سوالی الان برام پیش اومد ، ممنون میشم راهنمایی بفرمایید .
زمانی که بخوایم تا مقدار یک object ، رو از یک فرم و تگ input دریافت کنیم و قرار بدیم ، چطور میشه ؟
مثلا بخوایم تا کاری کنیم که مقداری که کاربر وارد میکنه توی تگ input ، بیاد و بره توی مقدار اون object موردنظر ما قرار بگیره و مثلا در انتها ما اون مقداری که توی اون object قرار گرفته رو چاپ کنیم .
آیا میتونیم name اون تگ input رو توی مقدار object قرار بدیم ؟
و همچنین اگر بخوایم زمانی که یه شرطی برقرار باشه ، یه تگی از html ، به رنگ دلخواهمون در بیاد باید چکار انجام بدیم ؟
با تشکر

لقمان آوند

حامد جان هنوز اول دوره ای …
جلوتر که بری چه تو جاوااسکریپت و چه تو جی کوئری آموزش داده میشه این موارد .
سعی کن دوره رو به ترتیب جلو بری و پرش نداشته باشی …

حامد نجاری replyپاسخ

سلام آقای آوند ،
اکثر سوالاتم با دیدن ادامه قسمت های دوره برطرف شد ، متشکرم ؛
فقط تنها سوالی که برام باقی مونده همین نحوه دریافت مقدار توسط تگ های input ، و قرار دادن اونها در object هست ،
ممنون میشم راهنمایی بفرمایید .

لقمان آوند

اینم به زودی بهش میرسی
عجله نکن سعی کن به ترتیی بری جلو
فعلا که جلسه 6 هستی و اوایل دوره هست!

حامد نجاری replyپاسخ

سلام ، ممنون از پاسخگویی شما . بله ؛ این موارد رو توی جلسه 9 مشاهده کردم ، شما که ایرادی توی کارتون وجود نداره ، من یه مقدار عجله کردم بابت یادگیری این موارد ؛
من طبق فرمایش شما ، دوره رو به ترتیب دارم به جلو میرم و الان جلسه ی 10 هستم . الان هم که تابستون شروع شده و امتحانات خرداد ماه کلاس هشتم هم با موفقیت به اتمام رسید و هم اکنون با خیال راحت میتونم هر روز 2 جلسه از دوره رو مشاهده کنم .
هر جلسه ی این دوره ، کلی ارزش داره و نباید حتی 1 جلسش رو هم به نظر من از دست داد .
بنده باز هم میخوام تا از شما بابت این دوره و سایر دوره هایی که برگزار نمودید ، تشکر ویژه کنم ، چون هر جلسه ای رو که نگاه میکنم ، نکته ها و مطالب جدیدتری رو به طور کامل یاد میگیرم و واقعا جای سپاس و قدردانی داره ؛
استاد هایی نظیر شما واقعا به ندرت پیدا میشن که به این کاملی تدریس کنن ؛
خوشحالم که با وب سایت شما آشنا شدم ، من تا قبل از آشنایی با سایت شما میخواستم تا آموزش ها رو از سایت دیگه ای خریداری کنم ، ولی راضی نمیشدم و برای همین صبر کردم تا روزی با سایت شما آشنا شدم .
به همکلاسیم هم وب سایت شما رو معرفی کردم و فکر کنم او هم دوره ی طراحی وب رو ثبت نام کرده . اوایلش شک داشت ، ولی بالاخره راضیش کردم و الان که درحال گذروندن دوره هست ، او هم بسیار راضی هست و قصد داره تا دوره های بعدی شما رو هم خریداری کنه .

لقمان آوند

ممنون از لطف شما …
سپاسگزارم

saman masoomi replyپاسخ

سلام
توی تمرین این جلسه آخرش گفتین که با تمام حلقه ها اسکریپتی بنویسیم که فقط اعداد فرد آرایه رو ضرب در 3 کنه و چاپ کنه.
من اینکار رو انجام دادم ولی توی حلقه While به مشکل خوردم :
توی حلقه While وقتی Continue رو استفاده میکنیم برنامه میوفته توی حلقه ولی توی بقیه حلقه ها استفاده میکنیم مشکلی پیش نمیاد. چرا ؟
همچنین اینکه حلقه ها توی پروژه های واقعی کجا بکار میرن ؟
خیلی ممنون 😎

لقمان آوند

کدتوندرو ایمیل کنید ببینم
هر جا نیاز به پردازش روی مجموعه ای از داده ها و آرایه ها باشه حلقه ها بدرد می خورن
کاربردشون رو در جلسات بعد می بینید

زهرا صوفی replyپاسخ

سلام استاد می خواستم بدونم که چطوری فرد بودن اعضای آرایه دوبعدی رو بررسی کنیم من کد زیر را می نویسم ولی دقیق نمی دونم دستور print رو کجا قرار بدم تا خروجی رو برگردونه؟کد همه دوستان رو نگاه کردم و فکر میکنم همه اعضای آرایه یک بعدی رو بررسی کردن

لقمان آوند

کدتون ناقصه.
j باید در اول حلقه نخست 0 شه که ارایه های داخلی رو از اول بخونه .
شرط فرد بودنتون هم غلطه و مثلا 16.5 رو هم فرد می بینه!
محل صحیح چاپ هم داخل شرط مذکور هست
اینو استفاده کنید :

موفق باشید

saman masoomi replyپاسخ

سلام
استاد برای جمع اعداد توی آرایه های تک بعدی و دوبعدی چیکار باید بکنیم ؟

لقمان آوند

فرقی نداره. در داخلی ترین حلقه اعداد رو به sum اضافه کنید. در انتهای کد sum رو چاپ کنید.

saman masoomi replyپاسخ

این رو نوشتم ولی به جای اینکه جمع نهایی رو بده، خروجی اینه : 1346

لقمان آوند

باید بیرون از حلقه چاپ کنید :

saman masoomi

خیلی ممنون.
ببخشید 2 تا سوال دیگه داشتم.
برای جمع آرائه های تودرتو همونطور که گفتین داخلی ترین حلقه اعداد رو اضافه کردم ولی این جمع نهایی رو میده. من اگر بخوام جمع هر آرایه رو جداگانه بده چی ؟

var arr = [[1,2],[11,12,13,14],[21,22],[31,32]];
sum=0;
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
sum += arr[i][j];
}
chap(sum);
}
سوال دیگه هم ایجاد حلقه تودرتو با While هست :

var i = 0;
var j = 0;
while (i < arr.length) {
chap(arr[i]);
while (j < arr[i].length) {

chap(arr[i][j]);
j++;
}
i++;
}

ولی متاسفانه درست عمل نمیکنه.
ممنون.

لقمان آوند

کد زیر برای نمایش جمع جداگانه هر آرایه هست :

saman masoomi replyپاسخ

خیلی ممنون.
خروجی نهایی جمع همش رو نشون میده. منظور من اینه که جمع آرایه اول رو بگه : 3 دوم رو بگه : 50. یعنی جدا بگه.
توی حلقه While اومدین گفتین j = 0 که آرایه های بعدی رو از ایندکس 0 شروع کنه ولی توی حلقه for چرا نیاز نیست بگیم ؟ همچنین خودش به صورت خودکار چطور i++ یا j++ رو سر جای مناسب قرار میده ؟
ممنون

لقمان آوند

خوب کدی که بهتون دادم دقیقا همینکارو می کرد. اصلا اجراش کردید ؟
چون تو for خودش در ابتدا این دستورو درون بدنه خودش داره. ولی برای while نیست و باید اول حلقه بزارید.

saman masoomi

بله تست کردم. مثلا آرایه اول جمعش میشه 5 و آرایه دوم میشه 20 . جواب آرایه دوم رو 25 چاپ میکنه .
مهم نیست ممنون.

لقمان آوند

sum رو هم قبل از حلقه داخلی باید 0 بدید مقدارشو که با قبلیا جمع نشه ..

saman masoomi replyپاسخ

بسیار عالی 😆
ممنون. کی میشه این نکات ریز رو یاد بگیریم. 🙁

مجید زارعی هوشیار replyپاسخ

سلام …آقای آوند عالی بود…ممنون از توضیحاتتون….فقط من حسرت اینو میخورم چرا دیر با سایت شما آشنا شدم……….وتمرینات رو هم انجام دادم……از استایل هام استفاده کردم 😯 🙂 🙂 🙂 🙂

it,one replyپاسخ

سلام استاد اوند عزیز استاد ببخشید یه سوالی ذهنمو در گیر کرده
;if(candition)
}
{
اگه توی ایف اگه سمی کالمن بگذاریم ایا فرقی داره ؟!‌
امید وارم منظورمو خوب رسونده باشم

لقمان آوند

متوجه نشدم دقیق ؟

مهدیه تقوی replyپاسخ

سلام. یه سوال داشتم. اقای اوند اگر document.write رو قبل از اولین for قرار بدیم اشتباهه؟چه فرقی داره قبلش باشه یا بعدش؟

document.write("<div class=’row’>");
    for (i = 0; i < arr.length; i++) {
        for (j = 0; j < arr[i].length; j++) {
            arr[i][j] *=  10;
            document.write("<span class=’element’>" + arr[i][j] + "</span>")
مهدیه تقوی replyپاسخ

اقای اوند علت گذاشتن اون دو تا علامت مثبت قبل و بعد از چاپ خروجی چیه؟ من متوجه نشدم.

document.write("sum arr["+i+"]
ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.