نقاشی دستساز از Tomomi Imura
journey
title ماجرای آرایهها و حلقههای شما
section مبانی آرایه
ایجاد آرایهها: 5: You
دسترسی به عناصر: 4: You
روشهای آرایه: 5: You
section تسلط بر حلقهها
حلقههای For: 4: You
حلقههای While: 5: You
نحو مدرن: 4: You
section پردازش دادهها
آرایه + حلقهها: 5: You
کاربردهای دنیای واقعی: 4: You
بهینهسازی عملکرد: 5: You
کسی تا به حال فکر کرده چگونه وبسایتها اقلام سبد خرید را پیگیری میکنند یا فهرست دوستان شما را نمایش میدهند؟ اینجاست که آرایهها و حلقهها وارد میدان میشوند. آرایهها مانند مخازن دیجیتال هستند که چندین قطعه اطلاعات را در خود نگه میدارند، در حالی که حلقهها به شما امکان میدهند با همه آن دادهها به طور مؤثر و بدون کد تکراری کار کنید.
این دو مفهوم در کنار هم پایهای برای مدیریت اطلاعات در برنامههای شما هستند. شما یاد خواهید گرفت که چگونه از نوشتن دستی هر مرحله به ساخت کدی هوشمند و کارآمد که میتواند صدها یا حتی هزاران مورد را سریع پردازش کند، حرکت کنید.
تا پایان این درس، خواهید فهمید که چگونه کارهای پیچیده دادهای را تنها با چند خط کد انجام دهید. بیایید این مفاهیم اساسی برنامهنویسی را کشف کنیم.
🎥 برای دیدن ویدیوهای مربوط به آرایهها و حلقهها روی تصاویر بالا کلیک کنید.
میتوانید این درس را در Microsoft Learn نیز دنبال کنید!
mindmap
root((پردازش داده))
Arrays
Structure
ساختار براکتهای مربع
اندیسگذاری صفر پایه
اندازهگیری پویا
Operations
push/pop
shift/unshift
indexOf/includes
Types
آرایه اعداد
آرایه رشتهها
انواع مخلوط
Loops
For Loops
شمارش تکرارها
پردازش آرایه
جریان قابل پیشبینی
While Loops
مبتنی بر شرط
تکرارهای نامشخص
ورودی کاربر
Modern Syntax
for...of
forEach
متدهای تابعی
Applications
Data Analysis
آمار
فیلترکردن
تبدیلها
User Interfaces
فهرستها
منوها
گالریها
آرایهها را مانند یک کشوی فایل دیجیتال تصور کنید - به جای ذخیره یک سند در هر کشو، میتوانید چندین مورد مرتبط را در یک مخزن سازمانیافته نگه دارید. به زبان برنامهنویسی، آرایهها به شما اجازه میدهند چندین قطعه اطلاعات را در یک بسته بندی منظم ذخیره کنید.
چه در حال ساخت یک گالری عکس باشید، چه مدیریت یک لیست کارها یا پیگیری امتیازات بالا در بازی، آرایهها پایهای برای سازماندهی دادهها فراهم میکنند. بیایید ببینیم چگونه کار میکنند.
✅ آرایهها همه جا هستند! میتوانید یک مثال واقعی از آرایه را مثال بزنید، مثل آرایه پنلهای خورشیدی؟
ایجاد یک آرایه بسیار ساده است - فقط کافی است از کروشههای مربعی استفاده کنید!
// آرایه خالی - مثل یک سبد خرید خالی که منتظر اقلام است
const myArray = [];چه اتفاقی اینجا میافتد؟
شما همین الان یک مخزن خالی با استفاده از آن کروشههای مربعی [] ساختهاید. تصور کنید مثل یک قفسه کتابخانه خالی است - آماده است تا هر کتابی که میخواهید آنجا سازماندهی کنید را در خود نگه دارد.
همچنین میتوانید آرایه خود را با مقادیر اولیه از همان ابتدا پر کنید:
// منوی طعم بستنی مغازه شما
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
// اطلاعات پروفایل یک کاربر (ترکیب انواع مختلف داده)
const userData = ["John", 25, true, "developer"];
// نمرات آزمون برای کلاس مورد علاقه شما
const scores = [95, 87, 92, 78, 85];نکات جالب برای توجه:
- میتوانید متن، اعداد، یا حتی مقادیر درست/نادرست را در همان آرایه ذخیره کنید
- فقط هر مورد را با کاما جدا کنید - ساده است!
- آرایهها برای نگهداری اطلاعات مرتبط با هم فوقالعادهاند
flowchart LR
A["📦 آرایهها"] --> B["ایجاد [ ]"]
A --> C["ذخیره چندین مورد"]
A --> D["دسترسی با اندیس"]
B --> B1["const arr = []"]
B --> B2["const arr = [1,2,3]"]
C --> C1["اعداد"]
C --> C2["رشتهها"]
C --> C3["بولینها"]
C --> C4["انواع مخلوط"]
D --> D1["arr[0] = اول"]
D --> D2["arr[1] = دوم"]
D --> D3["arr[2] = سوم"]
E["📊 اندیس آرایه"] --> E1["اندیس 0: اول"]
E --> E2["اندیس 1: دوم"]
E --> E3["اندیس 2: سوم"]
E --> E4["اندیس n-1: آخر"]
style A fill:#e3f2fd
style B fill:#e8f5e8
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#e0f2f1
یک نکتهای که شاید اول کمی غیرعادی به نظر برسد: آرایهها اقلام خود را از شماره ۰ شمارش میکنند، نه ۱. این شمارهگذاری از صفر منشأ در نحوه کار حافظه کامپیوتر دارد - و یک قرارداد برنامهنویسی از زمانهای ابتدایی زبانهایی مانند C است. هر خانه در آرایه یک شماره آدرس مخصوص به خود به نام ایندکس دارد.
| ایندکس | مقدار | توضیح |
|---|---|---|
| 0 | "شکلاتی" | عنصر اول |
| 1 | "توت فرنگی" | عنصر دوم |
| 2 | "وانیلی" | عنصر سوم |
| 3 | "پستهای" | عنصر چهارم |
| 4 | "راک رود" | عنصر پنجم |
✅ آیا تعجب میکنید که آرایهها از ایندکس صفر شروع میشوند؟ در برخی زبانهای برنامهنویسی، ایندکسها از ۱ شروع میشوند. تاریخچه جالبی درباره این موضوع وجود دارد که میتوانید در ویکیپدیا بخوانید.
دسترسی به عناصر آرایه:
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
// دسترسی به عناصر فردی با استفاده از نماد کروشه
console.log(iceCreamFlavors[0]); // "شکلات" - اولین عنصر
console.log(iceCreamFlavors[2]); // "وانیل" - سومین عنصر
console.log(iceCreamFlavors[4]); // "راکى رود" - آخرین عنصرتجزیه و تحلیل آنچه اینجا رخ میدهد:
- استفاده از علامت کروشه با شماره ایندکس برای دسترسی به عناصر
- بازگرداندن مقدار ذخیره شده در آن موقعیت خاص آرایه
- شروع شمارش از ۰ به طوری که اولین عنصر ایندکس ۰ دارد
تغییر عناصر آرایه:
// تغییر یک مقدار موجود
iceCreamFlavors[4] = "Butter Pecan";
console.log(iceCreamFlavors[4]); // "بادام زمینی کرهای"
// افزودن یک عنصر جدید در انتها
iceCreamFlavors[5] = "Cookie Dough";
console.log(iceCreamFlavors[5]); // "خمیر کوکی"در نمونه بالا، ما:
- عنصر ایندکس ۴ را از "راک رود" به "باتر پیکان" تغییر دادیم
- یک عنصر جدید "کاکی دو" را در ایندکس ۵ اضافه کردیم
- اندازه آرایه را هنگام اضافه کردن فراتر از محدودیتهای فعلی به طور خودکار افزایش دادیم
آرایهها با خصوصیات و روشهای داخلی میآیند که کار با دادهها را بسیار آسانتر میکنند.
یافتن طول آرایه:
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
console.log(iceCreamFlavors.length); // ۵
// طول به صورت خودکار با تغییر آرایه بهروزرسانی میشود
iceCreamFlavors.push("Mint Chip");
console.log(iceCreamFlavors.length); // ۶نکات کلیدی برای به خاطر سپردن:
- تعداد کل عناصر موجود در آرایه را بازمیگرداند
- به صورت خودکار هنگام اضافه یا حذف عناصر بهروزرسانی میشود
- ارائه شمارش پویا که در حلقهها و اعتبارسنجیها استفاده میشود
روشهای مهم آرایه:
const fruits = ["apple", "banana", "orange"];
// افزودن عناصر
fruits.push("grape"); // اضافه کردن به انتها: ["apple", "banana", "orange", "grape"]
fruits.unshift("strawberry"); // اضافه کردن به ابتدا: ["strawberry", "apple", "banana", "orange", "grape"]
// حذف عناصر
const lastFruit = fruits.pop(); // حذف و بازگرداندن "grape"
const firstFruit = fruits.shift(); // حذف و بازگرداندن "strawberry"
// یافتن عناصر
const index = fruits.indexOf("banana"); // بازگرداندن ۱ (موقعیت "banana")
const hasApple = fruits.includes("apple"); // بازگرداندن trueدرک این روشها:
- اضافه کردن عناصر با
push()(پایان) وunshift()(شروع) - حذف عناصر با
pop()(پایان) وshift()(شروع) - یافتن عناصر با
indexOf()و بررسی وجود باincludes() - بازگرداندن مقادیری مثل عناصر حذف شده یا ایندکس محلها
✅ خودتان امتحان کنید! در کنسول مرورگر خود آرایهای بسازید و آن را دستکاری کنید.
درک خود را از آرایه تست کنید:
- چرا فکر میکنید آرایهها شمارش را از ۰ شروع میکنند نه ۱؟
- اگر تلاش کنید به ایندکسی دسترسی پیدا کنید که وجود ندارد (مانند
arr[100]در آرایهای با ۵ عنصر)، چه اتفاقی میافتد؟ - میتوانید سه مثال دنیای واقعی که آرایهها در آنها مفید هستند، بیاورید؟
stateDiagram-v2
[*] --> EmptyArray: const arr = []
EmptyArray --> WithItems: افزودن عناصر
WithItems --> Accessing: استفاده از ایندکسها
Accessing --> Modifying: تغییر مقادیر
Modifying --> Processing: استفاده از متدها
WithItems --> WithItems: push(), unshift()
Processing --> Processing: pop(), shift()
note right of Accessing
ایندکسگذاری صفر مبنا
arr[0] = عنصر اول
end note
note right of Processing
متدهای داخلی
عملیات پویا
end note
بینش دنیای واقعی: آرایهها در همه جای برنامهنویسی هستند! فیدهای رسانههای اجتماعی، سبدهای خرید، گالری عکسها، لیستهای پخش موسیقی — همهی اینها پشت صحنه آرایه هستند!
حلقهها را مانند مجازات مشهور در رمانهای چارلز دیکنز تصور کنید که دانشآموزان مجبور بودند خطوطی را بارها و بارها روی تخته بنویسند. تصور کنید اگر بتوانید به سادگی به کسی بگویید «این جمله را ۱۰۰ بار بنویس» و آن به طور خودکار انجام شود. این دقیقاً همان کاری است که حلقهها برای کد شما انجام میدهند.
حلقهها مانند داشتن یک دستیار بیوقفهاند که میتواند وظایف را بدون خطا تکرار کند. چه لازم باشد همه آیتمهای سبد خرید را بررسی کنید یا تمام عکسها را در یک آلبوم نمایش دهید، حلقهها تکرار را به طور مؤثری مدیریت میکنند.
جاوااسکریپت انواع مختلفی از حلقهها را ارائه میدهد. بیایید هر کدام را بررسی کنیم و بفهمیم چه زمانی از آنها استفاده کنیم.
flowchart TD
A["🔄 انواع حلقهها"] --> B["حلقه For"]
A --> C["حلقه While"]
A --> D["حلقه For...of"]
A --> E["متد forEach"]
B --> B1["تکرارهای مشخص"]
B --> B2["بر اساس شمارنده"]
B --> B3["for(init; شرط; افزایش)"]
C --> C1["تکرارهای ناشناخته"]
C --> C2["بر اساس شرط"]
C --> C3["while(شرط)"]
D --> D1["مدرن ES6+"]
D --> D2["تکرار آرایه"]
D --> D3["for(آیتم از آرایه)"]
E --> E1["سبک تابعی"]
E --> E2["متد آرایه"]
E --> E3["array.forEach(تابع_تماس)"]
F["⏰ چه زمانی استفاده کنیم"] --> F1["For: شمارش، ایندکسها"]
F --> F2["While: ورودی کاربر، جستجو"]
F --> F3["For...of: تکرار ساده"]
F --> F4["forEach: برنامهنویسی تابعی"]
style A fill:#e3f2fd
style B fill:#e8f5e8
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#e0f2f1
style F fill:#fce4ec
حلقه for مانند تنظیم تایمر است - شما دقیقاً میدانید چند بار میخواهید چیزی اتفاق بیفتد. بسیار منظم و قابل پیشبینی است، که آن را برای کار با آرایهها یا شمارش چیزها ایدهآل میکند.
ساختار حلقه For:
| بخش | هدف | مثال |
|---|---|---|
| مقداردهی اولیه | تعیین نقطه شروع | let i = 0 |
| شرط | ادامه اجرای حلقه | i < 10 |
| افزایش | نحوه بهروزرسانی | i++ |
// شمارش از ۰ تا ۹
for (let i = 0; i < 10; i++) {
console.log(`Count: ${i}`);
}
// مثال کاربردیتر: پردازش نمرات
const testScores = [85, 92, 78, 96, 88];
for (let i = 0; i < testScores.length; i++) {
console.log(`Student ${i + 1}: ${testScores[i]}%`);
}گام به گام، اینجا چه اتفاقی میافتد:
- مقداردهی اولیه متغیر شمارنده
iبرابر ۰ در ابتدا - بررسی شرط
i < 10قبل از هر تکرار - اجرای بلوک کد وقتی که شرط صحیح باشد
- افزایش مقدار
iبه اندازه ۱ بعد از هر تکرار باi++ - توقف هنگامی که شرط نادرست میشود (وقتی
iبه ۱۰ میرسد)
✅ این کد را در کنسول مرورگر اجرا کنید. وقتی تغییرات کوچکی در شمارنده، شرط یا قسمت افزایش ایجاد میکنید، چه اتفاقی میافتد؟ میتوانید آن را طوری اجرا کنید که عقبگرد کند و شمارش معکوس ایجاد کند؟
درک خود از حلقه for را ارزیابی کنید:
- سه قسمت حلقه For کدامند و هرکدام چه کاری انجام میدهند؟
- چگونه میتوانید به صورت معکوس روی آرایه حلقه بزنید؟
- اگر قسمت افزایش (
i++) را فراموش کنید چه اتفاقی میافتد؟
flowchart TD
A["🚀 شروع حلقه for"] --> B["مقداردهی اولیه: let i = 0"]
B --> C{"شرط: i < طول آرایه؟"}
C -->|true| D["اجرای بلوک کد"]
D --> E["افزایش: i++"]
E --> C
C -->|false| F["✅ خروج از حلقه"]
G["📋 الگوهای رایج"] --> G1["for(let i=0; i<n; i++)"]
G --> G2["for(let i=n-1; i>=0; i--)"]
G --> G3["for(let i=0; i<arr.length; i+=2)"]
style A fill:#e3f2fd
style F fill:#e8f5e8
style G fill:#fff3e0
حکمت حلقهها: حلقههای For زمانی که دقیقاً میدانید چند بار چیزی را باید تکرار کنید، عالیاند. آنها رایجترین انتخاب برای پردازش آرایهها هستند!
حلقه while مانند گفتن «ادامه بده تا زمانی که...» است - ممکن است دقیقاً ندانید چند بار اجرا میشود، ولی میدانید چه زمانی باید متوقف شود. این برای کارهایی مانند گرفتن ورودی از کاربر تا دریافت داده مورد نظر یا جستجو در دادهها برای یافتن چیزی، ایدهآل است.
ویژگیهای حلقه While:
- تا زمانی که شرط درست باشد ادامه میدهد
- مدیریت دستی متغیرهای شمارنده را نیاز دارد
- شرط را قبل از هر تکرار بررسی میکند
- ریسک حلقه بینهایت اگر شرط هرگز نادرست نشود
// مثال پایه شمارش
let i = 0;
while (i < 10) {
console.log(`While count: ${i}`);
i++; // فراموش نکنید که افزایش دهید!
}
// مثال عملیتر: پردازش ورودی کاربر
let userInput = "";
let attempts = 0;
const maxAttempts = 3;
while (userInput !== "quit" && attempts < maxAttempts) {
userInput = prompt(`Enter 'quit' to exit (attempt ${attempts + 1}):`);
attempts++;
}
if (attempts >= maxAttempts) {
console.log("Maximum attempts reached!");
}درک این مثالها:
- مدیریت دستی متغیر شمارنده
iداخل بدنه حلقه - افزایش شمارنده برای جلوگیری از حلقه بینهایت
- نمایش کاربرد عملی با ورودی کاربر و محدود کردن تعداد تلاشها
- شامل مکانیزمهای ایمنی برای جلوگیری از اجرای بیپایان
درک خود از حلقه while را امتحان کنید:
- خطر اصلی هنگام استفاده از حلقههای while چیست؟
- چه زمانی حلقه while را به حلقه for ترجیح میدهید؟
- چگونه میتوان از حلقههای بینهایت جلوگیری کرد؟
flowchart LR
A["🔄 حلقههای While در مقابل For"] --> B["حلقه While"]
A --> C["حلقه For"]
B --> B1["تعداد تکرار نامشخص"]
B --> B2["مبتنی بر شرط"]
B --> B3["ورودی کاربر، جستجو"]
B --> B4["⚠️ خطر: حلقههای بینهایت"]
C --> C1["تعداد تکرار مشخص"]
C --> C2["مبتنی بر شمارنده"]
C --> C3["پردازش آرایه"]
C --> C4["✅ ایمن: پایان پیشبینیشده"]
D["🛡️ نکات ایمنی"] --> D1["همیشه متغیر شرط را تغییر دهید"]
D --> D2["شرایط خروج را وارد کنید"]
D --> D3["حداکثر تعداد تکرار را تنظیم کنید"]
style A fill:#e3f2fd
style B fill:#fff3e0
style C fill:#e8f5e8
style D fill:#ffebee
اول ایمنی: حلقههای while قدرتمندند اما نیاز به مدیریت دقیق شرط دارند. همیشه مطمئن شوید شرط حلقه در نهایت نادرست میشود!
جاوااسکریپت آجهای حلقه مدرنی ارائه میدهد که میتوانند کد شما را خواناتر و کمخطاتر کنند.
حلقه For...of (از ES6 به بعد):
const colors = ["red", "green", "blue", "yellow"];
// رویکرد مدرن - پاکتر و ایمنتر
for (const color of colors) {
console.log(`Color: ${color}`);
}
// مقایسه با حلقه for سنتی
for (let i = 0; i < colors.length; i++) {
console.log(`Color: ${colors[i]}`);
}مزایای کلیدی for...of:
- حذف مدیریت ایندکس و خطاهای احتمالی در شمارهگذاری
- دسترسی مستقیم به عناصر آرایه
- افزایش خوانایی کد و کاهش پیچیدگی سینتکس
روش forEach:
const prices = [9.99, 15.50, 22.75, 8.25];
// استفاده از forEach برای سبک برنامهنویسی تابعی
prices.forEach((price, index) => {
console.log(`Item ${index + 1}: $${price.toFixed(2)}`);
});
// forEach با توابع فلشی برای عملیات ساده
prices.forEach(price => console.log(`Price: $${price}`));چیزهایی که باید درباره forEach بدانید:
- اجرای تابعی برای هر عنصر آرایه
- ارائه مقدار عنصر و ایندکس به عنوان پارامتر
- قادر به توقف زودهنگام نیست (برخلاف حلقههای سنتی)
- بازگرداندن مقدار undefined (آرایه جدید ایجاد نمیکند)
✅ چرا ممکن است حلقه for را به حلقه while ترجیح دهید؟ ۱۷ هزار نفر این سؤال را در StackOverflow داشتند و برخی نظرات ممکن است برای شما جالب باشد.
درک خود را از جاوااسکریپت مدرن ارزیابی کنید:
- مزایای
for...ofنسبت به حلقههای for سنتی چیست؟ - چه زمانی ممکن است هنوز حلقههای for سنتی را ترجیح دهید؟
- تفاوت
forEachوmapچیست؟
quadrantChart
title راهنمای انتخاب حلقه
x-axis سنتی --> مدرن
y-axis ساده --> پیچیده
quadrant-1 مدرن پیچیده
quadrant-2 سنتی پیچیده
quadrant-3 سنتی ساده
quadrant-4 مدرن ساده
Traditional For: [0.2, 0.7]
While Loop: [0.3, 0.6]
For...of: [0.8, 0.3]
forEach: [0.9, 0.4]
Array Methods: [0.8, 0.8]
روند مدرن: سینتکس ES6+ مانند
for...ofوforEachدر حال تبدیل شدن به رویکرد محبوب برای تکرار آرایهها هستند چون پاکتر و کمتر خطاپذیرند!
ترکیب آرایهها با حلقهها قابلیتهای قدرتمندی برای پردازش داده ایجاد میکند. این زوجبندی پایهای برای بسیاری از وظایف برنامهنویسی است، از نمایش فهرستها گرفته تا محاسبات آماری.
پردازش سنتی آرایه:
const iceCreamFlavors = ["Chocolate", "Strawberry", "Vanilla", "Pistachio", "Rocky Road"];
// روش کلاسیک حلقه for
for (let i = 0; i < iceCreamFlavors.length; i++) {
console.log(`Flavor ${i + 1}: ${iceCreamFlavors[i]}`);
}
// روش مدرن for...of
for (const flavor of iceCreamFlavors) {
console.log(`Available flavor: ${flavor}`);
}بیایید هر روش را درک کنیم:
- استفاده از خاصیت طول آرایه برای تعیین مرز حلقه
- دسترسی به عناصر توسط ایندکس در حلقههای for سنتی
- دسترسی مستقیم به عناصر در حلقههای for...of
- پردازش هر عنصر آرایه دقیقاً یک بار
مثال عملی پردازش داده:
const studentGrades = [85, 92, 78, 96, 88, 73, 89];
let total = 0;
let highestGrade = studentGrades[0];
let lowestGrade = studentGrades[0];
// همه نمرات را با یک حلقه پردازش کنید
for (let i = 0; i < studentGrades.length; i++) {
const grade = studentGrades[i];
total += grade;
if (grade > highestGrade) {
highestGrade = grade;
}
if (grade < lowestGrade) {
lowestGrade = grade;
}
}
const average = total / studentGrades.length;
console.log(`Average: ${average.toFixed(1)}`);
console.log(`Highest: ${highestGrade}`);
console.log(`Lowest: ${lowestGrade}`);چگونگی کارکرد این کد:
- مقداردهی اولیه متغیرهای پیگیری مجموع و مقادیر حداکثر و حداقل
- پردازش هر نمره با یک حلقه کارآمد تنها
- انباشتن جمع برای محاسبه میانگین
- پیگیری مقادیر بیشینه و کمینه در طول تکرار
- محاسبه آمار نهایی پس از اتمام حلقه
✅ با حلقه زدن روی آرایهای که خودتان ساختهاید در کنسول مرورگر خود آزمایش کنید.
flowchart TD
A["📦 دادههای آرایه"] --> B["🔄 پردازش حلقهای"]
B --> C["📈 نتایج"]
A1["[85, 92, 78, 96, 88]"] --> A
B --> B1["محاسبه مجموع"]
B --> B2["یافتن مین/ماکزیمم"]
B --> B3["شمارش شرایط"]
B --> B4["تغییر دادهها"]
C --> C1["میانگین: ۸۷.۸"]
C --> C2["بیشترین: ۹۶"]
C --> C3["موفقیت: ۵/۵"]
C --> C4["نمرات حرفی"]
D["⚡ الگوهای پردازش"] --> D1["انباشتهسازی (جمع)"]
D --> D2["مقایسه (مین/ماکزیمم)"]
D --> D3["فیلترکردن (شرایط)"]
D --> D4["نگاشت (تبدیل)"]
style A fill:#e3f2fd
style B fill:#fff3e0
style C fill:#e8f5e8
style D fill:#f3e5f5
از حالت Agent استفاده کنید برای کامل کردن چالش زیر:
شرح: ساخت یک تابع جامع پردازش داده که آرایهها و حلقهها را ترکیب کند تا مجموعه دادهای را تحلیل کرده و بینشهای معناداری تولید کند.
دستور: تابعی به نام analyzeGrades بسازید که یک آرایه از اشیای نمرات دانشآموزان (هر کدام شامل نام و امتیاز) بگیرد و یک شیء با آمارهایی مانند بالاترین نمره، پایینترین نمره، میانگین نمرات، تعداد دانشآموزانی که قبول شدهاند (امتیاز >= ۷۰) و آرایهای از نامهای دانشآموزان بالاتر از میانگین را بازگرداند. در راهحل خود از حداقل دو نوع حلقه مختلف استفاده کنید.
برای اطلاعات بیشتر درباره حالت Agent اینجا را ببینید.
جاوااسکریپت چندین متد مدرن آرایهای ارائه میدهد که میتوانند جایگزین حلقههای سنتی برای وظایف خاص شوند. forEach، for-of، map، filter و reduce را بررسی کنید.
چالش شما: مثال نمرات دانشآموزان را با استفاده از حداقل سه متد مختلف آرایه بازنویسی کنید. توجه کنید که چقدر کد با نحو مدرن جاوااسکریپت تمیزتر و خواناتر میشود.
آرایهها در جاوااسکریپت متدهای زیادی دارند که برای دستکاری دادهها بسیار مفید هستند. در مورد این متدها مطالعه کنید و چندتا از آنها (مثل push، pop، slice و splice) را روی آرایهای که ساختهاید امتحان کنید.
graph TD
A["🎯 تسلط بر آرایهها و حلقهها"] --> B["📦 مبانی آرایه"]
A --> C["🔄 انواع حلقهها"]
A --> D["🔗 پردازش دادهها"]
A --> E["🎨 تکنیکهای مدرن"]
B --> B1["ایجاد: [ ]"]
B --> B2["شاخصگذاری: arr[0]"]
B --> B3["متدها: push, pop"]
B --> B4["ویژگیها: length"]
C --> C1["For: تکرارهای مشخص"]
C --> C2["While: مبتنی بر شرط"]
C --> C3["For...of: دسترسی مستقیم"]
C --> C4["forEach: تابعی"]
D --> D1["محاسبه آمار"]
D --> D2["تبدیل دادهها"]
D --> D3["فیلتر و جستجو"]
D --> D4["پردازش بلادرنگ"]
E --> E1["توابع پیکاندار"]
E --> E2["زنجیرهسازی متدها"]
E --> E3["بازسازی ساختار"]
E --> E4["رشتههای قالببندی"]
F["💡 مزایای کلیدی"] --> F1["مدیریت مؤثر دادهها"]
F --> F2["کاهش تکرار کد"]
F --> F3["راهکارهای مقیاسپذیر"]
F --> F4["نحو تمیزتر"]
style A fill:#e3f2fd
style B fill:#e8f5e8
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#e0f2f1
style F fill:#fce4ec
- یک آرایه از فیلمهای مورد علاقهتان بسازید و به عناصر خاص آن دسترسی پیدا کنید
- یک حلقه for بنویسید که از ۱ تا ۱۰ بشمرد
- چالش متدهای مدرن آرایه را که در درس بود امتحان کنید
- تمرین ایندکسگذاری آرایه را در کنسول مرورگرتان انجام دهید
- آزمون پس از درس را کامل کنید و مفاهیم دشوار را مرور کنید
- تحلیلگر نمره جامع از چالش GitHub Copilot بسازید
- یک سبد خرید ساده بسازید که آیتم اضافه و حذف کند
- تمرین تبدیل بین انواع مختلف حلقهها
- آزمایش با متدهای آرایه مانند
push،pop،sliceوsplice
- تکلیف "حلقه زدن روی یک آرایه" را با بهبودهای خلاقانه به پایان برسانید
- یک برنامه فهرست انجام کار با استفاده از آرایهها و حلقهها بسازید
- یک ماشینحساب ساده آمار برای دادههای عددی بسازید
- تمرین با متدهای آرایه MDN
- یک گالری عکس یا رابط لیست پخش موسیقی بسازید
- برنامهنویسی تابعی را با
map،filterوreduceکاوش کنید
- تسلط بر عملیات پیشرفته آرایه و بهینهسازی عملکرد
- ساخت داشبورد کامل تجسم داده
- مشارکت در پروژههای متنباز در حوزه پردازش دادهها
- آموزش به دیگران درباره آرایهها و حلقهها با مثالهای عملی
- ساخت کتابخانه شخصی از توابع قابل استفاده مجدد پردازش داده
- کاوش الگوریتمها و ساختار دادههای مبتنی بر آرایه
مهارت خود در آرایهها و حلقهها را جشن بگیرید:
- مفیدترین عملیات آرایهای که برای کاربردهای دنیای واقعی یاد گرفتهاید چیست؟
- کدام نوع حلقه برای شما طبیعیتر است و چرا؟
- درک آرایهها و حلقهها چگونه رویکرد شما را در سازماندهی داده تغییر داده است؟
- دوست دارید بعداً چه کار پیچیده پردازش دادهای را انجام دهید؟
journey
title تحول پردازش دادههای شما
section امروز
سردرگمی آرایه: 3: شما
اصول حلقهها: 4: شما
درک ایندکسها: 5: شما
section این هفته
تسلط بر متدها: 4: شما
پردازش بهینه: 5: شما
نحو مدرن: 5: شما
section ماه آینده
الگوریتمهای پیچیده: 5: شما
بهینهسازی عملکرد: 5: شما
آموزش به دیگران: 5: شما
📦 شما قدرت سازماندهی و پردازش دادهها را آزاد کردهاید! آرایهها و حلقهها پایه تقریباً هر برنامهای هستند که میسازید. از لیستهای ساده تا تحلیلهای پیچیده داده، اکنون ابزارهای لازم برای مدیریت اطلاعات بهصورت کارآمد و شیک را در اختیار دارید. هر وبسایت پویا، اپلیکیشن موبایل و برنامههای دادهمحور بر این مفاهیم پایه متکیاند. به دنیای پردازش داده مقیاسپذیر خوش آمدید! 🎉
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. هرچند ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است دارای خطا یا نواقصی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده شود. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرستی که از استفاده این ترجمه به وجود آید نیستیم.


