const level = 'beginner'; function practice() {   return 'Learn by doing'; } practice();
🚀 تمرین کن، حل کن، حرفه‌ای‌تر شو
✨ مسیر تمرینی سطح‌بندی‌شده

تمرینات جاوااسکریپت از ساده تا سخت

این صفحه برای دسته‌بندی تمرین‌های جاوااسکریپت ساخته شده است؛ هر مبحث به‌صورت آکاردئونی نمایش داده می‌شود و داخل هر درس می‌توانی سوالات سطح‌بندی‌شده همراه با راهنما مشاهده کنی.

چطوری تمرینات رو حل کنم؟

برای تسلط هرچه بهتر ابتدا از سوالات ساده شروع کنید و به سمت سوالات سخت بروید

🟢 ساده
🟡 متوسط
🔴 سخت

مباحث و تمرین‌ها

هر درس را باز کن و سوالات مربوط به آن را ببین.

تعداد مباحث: 3
نام کاربر را با prompt بگیر. با confirm از او بپرس که آیا می‌خواهد سنش را وارد کند یا نه. اگر تأیید کرد، سن را بگیر و با alert نام و سن را نمایش بده. اگر تأیید نکرد، فقط نام او را نمایش بده.
🟡 متوسط
مشاهده راهنمایی
برای گرفتن نام از prompt استفاده کن. نتیجه‌ی confirm مقدار true یا false برمی‌گرداند. اگر مقدار confirm برابر true بود، یک prompt دیگر برای سن بنویس. با if / else تصمیم بگیر چه چیزی نمایش داده شود.
دو عدد از کاربر با prompt دریافت کن. با confirm از کاربر بپرس که آیا می‌خواهد جمع این دو عدد نمایش داده شود یا تفریق آن‌ها. اگر OK زد، جمع را نشان بده. اگر Cancel زد، تفریق را نشان بده.
🟡 متوسط
مشاهده راهنمایی
مقدارهایی که از prompt می‌گیری رشته هستند. قبل از محاسبه، آن‌ها را با Number() تبدیل به عدد کن. نتیجه‌ی confirm را داخل یک متغیر ذخیره کن. اگر true بود جمع، اگر false بود تفریق را حساب کن.
مبلغ خرید را از کاربر بگیر. با confirm بپرس که آیا کد تخفیف دارد یا نه. اگر داشت، مقدار درصد تخفیف را هم بگیر و مبلغ نهایی را حساب کن. اگر نداشت، همان مبلغ اصلی را نمایش بده. خروجی با alert نمایش داده شود.
🔴 سخت
مشاهده راهنمایی
مبلغ خرید را با Number() عددی کن. اگر کاربر کد تخفیف داشت، درصد تخفیف را با prompt بگیر.
سه نمره از کاربر بگیر. میانگین آن‌ها را حساب کن. سپس با confirm بپرس که آیا می‌خواهد وضعیت قبولی/ردی را هم ببیند یا نه. اگر میانگین بیشتر یا مساوی 10 بود: قبول. در غیر این صورت: رد
🟡 متوسط
مشاهده راهنمایی
سه نمره را با prompt بگیر و به عدد تبدیل کن. فرمول میانگین: average = (score1 + score2 + score3) / 3
سال تولد کاربر را با prompt بگیر و سن تقریبی او را حساب کن. بعد با confirm بپرس که آیا می‌خواهد بداند بالای 18 سال هست یا نه. اگر بله، نتیجه را با alert نمایش بده. اگر نه، فقط سن را نمایش بده.
🟡 متوسط
مشاهده راهنمایی
سال فعلی را در یک متغیر ذخیره کن. سال تولد را از کاربر بگیر و عددی کن. age = currentYear - birthYear
طول و عرض یک مستطیل را بگیر. با confirm از کاربر بپرس که آیا می‌خواهد مساحت محاسبه شود یا محیط. اگر OK زد، مساحت را نمایش بده. اگر Cancel زد، محیط را نمایش بده.
🟢 ساده
مشاهده راهنمایی
مساحت = length * width و محیط = (length + width) * 2
یک عدد از کاربر بگیر. با confirm مشخص کن که آیا کاربر می‌خواهد توان دوم عدد را ببیند یا توان سوم آن را. اگر OK زد، توان دوم را نمایش بده. اگر Cancel زد، توان سوم را نمایش بده.
🟢 ساده
مشاهده راهنمایی
square = number ** 2 و cube = number ** 3
دمای هوا را بر حسب سانتی‌گراد با prompt بگیر. با confirm بپرس: اگر OK زد، تبدیل به فارنهایت انجام شود. اگر Cancel زد، تبدیل به کلوین انجام شود.
🟡 متوسط
مشاهده راهنمایی
fahrenheit = (celsius * 9 / 5) + 32 و kelvin = celsius + 273.15
نام کالا و قیمت آن را از کاربر بگیر. سپس با confirm بپرس که آیا مالیات به آن اضافه شود یا نه. اگر بله، 9 درصد مالیات اضافه کن. اگر نه، همان قیمت را نمایش بده.
🟡 متوسط
مشاهده راهنمایی
راهنمایی ندارد
دو عدد از کاربر بگیر. با confirm بپرس که آیا می‌خواهد بزرگ‌تر بودن یکی نسبت به دیگری بررسی شود یا برابر بودنشان. اگر OK زد، مشخص کن کدام عدد بزرگ‌تر است. اگر Cancel زد، بررسی کن آیا دو عدد برابر هستند یا نه.
🟡 متوسط
مشاهده راهنمایی
دو مقدار را با prompt بگیر و عددی کن. اگر کاربر OK زد: با if / else if / else بررسی کن عدد اول بزرگ‌تر است یا عدد دوم. اگر Cancel زد: بررسی کن: num1 === num2
یک فانکشن بنویس که دو ورودی بگیرد: یک متن یک کلمه فانکشن باید بررسی کند که آیا آن کلمه داخل متن وجود دارد یا نه. اگر وجود داشت "یافت شد" و اگر نه "یافت نشد" برگرداند.
🟢 ساده
مشاهده راهنمایی
از متد includes() استفاده کن. فانکشن باید دو پارامتر داشته باشد. با if / else مشخص کن چه مقداری برگردد. متن و کلمه را با prompt از کاربر بگیر.
یک فانکشن بنویس که یک رشته، یک شماره شروع و یک شماره پایان بگیرد و بخشی از متن را جدا کرده و برگرداند.
🟢 ساده
مشاهده راهنمایی
از متد slice(start, end) استفاده کن. فانکشن باید سه پارامتر داشته باشد. start و end را با Number() به عدد تبدیل کن. متن را با prompt بگیر و بخش جداشده را با alert نمایش بده.
یک فانکشن بنویس که نام کامل کاربر را بگیرد و یک نام کاربری بسازد. قوانین: فاصله‌های ابتدا و انتهای متن حذف شوند . همه حروف کوچک شوند. فاصله‌ها با _ جایگزین شوند. نمونه: ورودی: " Ali Rezaei " خروجی: "ali_rezaei"
🟡 متوسط
مشاهده راهنمایی
از trim() برای حذف فاصله‌های ابتدا و انتها استفاده کن. از toLowerCase() برای کوچک کردن حروف استفاده کن. از replace() یا replaceAll() برای تبدیل فاصله به _ استفاده کن. بهتر است فانکشن فقط مقدار نهایی را return کند.
یک فانکشن بنویس که یک متن و یک حرف بگیرد و تعداد دفعات تکرار آن حرف را در متن حساب کند.
🟡 متوسط
مشاهده راهنمایی
می‌توانی متن را با toLowerCase() یکدست کنی. با یک حلقه روی رشته حرکت کن. هر بار که کاراکتر برابر حرف موردنظر بود، شمارنده را یکی زیاد کن. فانکشن باید در پایان تعداد را برگرداند.
یک فانکشن بنویس که بررسی کند آیا یک رشته پالیندروم هست یا نه. پالیندروم یعنی اگر از آخر هم خوانده شود همان باشد. نمونه: "level" → درست
🟡 متوسط
مشاهده راهنمایی
ابتدا بهتر است رشته را یکدست کنی: با trim() و با toLowerCase() و سپس رشته را برعکس کن. برای برعکس کردن می‌توانی از: split("") و reverse() و join("") استفاده کنی. در آخر متن اصلی و متن برعکس‌شده را مقایسه کن.
یک فانکشن بنویس که یک جمله بگیرد و فقط حروف اول هر کلمه را برگرداند. ورودی: "JavaScript Object Model" خروجی: "JOM"
🔴 سخت
مشاهده راهنمایی
ابتدا متن را با trim() تمیز کن. با split(" ") جمله را به آرایه‌ای از کلمات تبدیل کن. روی کلمات حرکت کن و حرف اول هرکدام را بردار. در آخر حروف را به هم بچسبان. اگر خواستی خروجی را با toUpperCase() هماهنگ کن.
یک فانکشن بنویس که یک متن و یک کلمه‌ی ممنوعه بگیرد و تمام تکرارهای آن کلمه را با "***" جایگزین کند. مثال: ورودی: متن: "js is great and js is popular" و کلمه ممنوعه: "js" خروجی: " is great and *** is popular***"
🔴 سخت
مشاهده راهنمایی
اگر از replace() ساده استفاده کنی فقط اولین مورد عوض می‌شود. برای جایگزینی همه موارد می‌توانی از replaceAll() استفاده کنی. اگر خواستی حرفه‌ای‌تر کار کنی، به تفاوت حروف بزرگ و کوچک هم توجه کن. فانکشن باید متن نهایی را return کند.
بزرگ‌ترین عدد موجود در یک آرایه را پیدا کنید.
🟢 ساده
مشاهده راهنمایی
اولین عنصر را به عنوان بزرگ‌ترین مقدار اولیه در نظر بگیرید و بقیه را با آن مقایسه کنید.
تعداد دفعات تکرار یک عدد مشخص را در آرایه بشمارید: [1, 2, 2, 2, 5], 2 => 3
🟢 ساده
مشاهده راهنمایی
هر بار که عنصر برابر مقدار مورد نظر بود، شمارنده را یکی زیاد کنید.
مجموع عناصری را حساب کنید که ایندکس آن‌ها زوج است: [5, 10, 15, 20, 25] => 45
🟢 ساده
مشاهده راهنمایی
منظور اندیس‌های 0, 2, 4, ... است، نه خود مقادیر زوج.
آرایه‌ای جدید بسازید که عناصر تکراری آرایه اصلی در آن حذف شده باشند: [1, 2, 2, 3, 1, 4] => [1, 2, 3, 4]
🟡 متوسط
مشاهده راهنمایی
برای هر عنصر بررسی کنید که قبلاً در آرایه جدید وجود دارد یا نه.
یک آرایه را بدون استفاده از reverse برعکس کنید.
🟡 متوسط
مشاهده راهنمایی
از انتهای آرایه شروع کنید و عناصر را در یک آرایه جدید قرار دهید.
بررسی کنید آیا آرایه به صورت صعودی مرتب شده است یا نه.
🟡 متوسط
مشاهده راهنمایی
هر عنصر را با عنصر بعدی مقایسه کنید.
دومین عدد بزرگ موجود در آرایه را پیدا کنید: [10, 5, 8, 20, 15] => 15
🟡 متوسط
مشاهده راهنمایی
دو متغیر برای بزرگ‌ترین و دومین بزرگ‌ترین نگه دارید.
همه ایندکس هایی را که یک مقدار مشخص در آن‌ها ظاهر شده پیدا کنید: [5, 2, 5, 3, 5], 5 => [0, 2, 4]
🟡 متوسط
مشاهده راهنمایی
هر زمان مقدار برابر شد، ایندکس را در آرایه خروجی ذخیره کنید.
آرایه‌ای از محصولات داری. فقط محصولاتی را نگه دار که قیمتشان بیشتر از 1000 است و بعد فقط نام آن‌ها را برگردان.
🟡 متوسط
مشاهده راهنمایی
اول filter بعد map