فهرست سرفصل‌های JavaScript
خانه (HOME) معرفی (Introduction) کجا قرار دهیم (Where To) خروجی (Output) ساختار نوشتاری (Syntax) دستورات (Statements) توضیحات (Comments) متغیرها (Variables) Let (Let) Const (Const) انواع داده (Types) عملگرها (Operators) عملگرهای حسابی (Arithmetic) عملگرهای انتسابی (Assignment) مقایسه ها (Comparisons) شرط ها (Conditional) if (If) if else (If Else) شرط سه تایی (Ternary) سوییچ (Switch) بولین ها (Booleans) منطقی (Logical) حلقه ها (Loops) حلقه for (Loop for) حلقه while (Loop while) break (Break) continue (Continue) رشته ها (Strings) رشته های قالبی (String Templates) جستجوی رشته (String Search) مرجع رشته (String Reference) اعداد (Numbers) متدهای عدد (Number Methods) ویژگی های عدد (Number Properties) مرجع عدد (Number Reference) عملگرهای بیتی (Bitwise) BigInt (BigInt) توابع (Functions) اشیا (Objects) ویژگی های شی (Object Properties) متدهای شی (Object Methods) نمایش شی (Object Display) تاریخ ها (Dates) قالب های تاریخ (Date Formats) دریافت تاریخ (Date Get) تنظیم تاریخ (Date Set) مرجع تاریخ (Date Reference) آرایه ها (Arrays) متدهای آرایه (Array Methods) جستجوی آرایه (Array Search) مرتب سازی آرایه (Array Sort) تکرارهای آرایه (Array Iterations) مرجع آرایه (Array Reference) ثابت آرایه (Array Const) آرایه های نوع دار (Typed Arrays) متدهای نوع دار (Typed Methods) مرجع نوع دار (Typed Reference) مجموعه ها (Sets) متدهای مجموعه (Set Methods) منطق مجموعه (Set Logic) WeakSet (WeakSet) مرجع مجموعه (Set Reference) نگاشت ها (Maps) متدهای نگاشت (Map Methods) WeakMap (WeakMap) مرجع نگاشت (Map Reference) ریاضی (Math) مرجع ریاضی (Math Reference) تصادفی (Math Random) عبارات منظم (RegExp) پرچم ها (RegExp Flags) کلاس های کاراکتری (RegExp Classes) متاکاراکترها (RegExp Metachars) گزاره ها (RegExp Assertions) تکرارکننده ها (RegExp Quantifiers) الگوها (RegExp Patterns) اشیای RegExp (RegExp Objects) متدهای RegExp (RegExp Methods) انواع داده (Data Types) typeof (typeof) toString() (toString()) تبدیل نوع (Type Conversion) خطاها: مقدمه (Errors Intro) خطاهای بی صدا (Errors Silent) دستورات خطا (Error Statements) شیء خطا (Error Object) اشکال زدایی (Debugging) رویدادها (Events) دامنه (Scope) بالابردن (Hoisting) حالت سخت گیرانه (Strict Mode) بلوک های کد (Code Blocks) راهنمای نگارش (Style Guide) بهترین شیوه ها (Best Practices) اشتباهات رایج (Mistakes) کارایی (Performance) مرجع کلمات کلیدی (Keywords Reference) کلمات رزرو شده (Keywords Reserved) مرجع عملگرها (Operator Reference) اولویت عملگرها (Operator Precedence) حروف UTF-8 (UTF-8 Letters) نمادهای UTF-8 (UTF-8 Symbols) ایموجی های UTF-8 (UTF-8 Emojis) نسخه ها (Versions) 2025 (2025) 2024 (2024) 2023 (2023) 2022 (2022) 2021 (2021) 2020 (2020) 2019 (2019) 2018 (2018) 2017 (2017) 2016 (2016) 2009 (2009 (ES5)) IE / Edge (IE / Edge) تاریخچه (History) تعریف تابع (Function Definitions) توابع پیکانی (Function Arrows) پارامترهای تابع (Function Parameters) فراخوانی تابع (Function Invocation) this در تابع (Function this) call (Function Call) apply (Function Apply) bind (Function Bind) Closureها (Function Closures) تعریف شی (Object Definitions) سازنده ها (Object Constructors) this شی (Object this) ساختارشکنی (Object Destructuring) پروتوتایپ ها (Object Prototypes) تکرار روی شی (Object Iterations) مدیریت ویژگی ها (Object Management) گیرنده/گذارنده (Get / Set) محافظت از شی (Object Protection) مرجع شی (Object Reference) کلاس ها (Classes) وراثت کلاس (Class Inheritance) اعضای ایستا (Class Static) حلقه زنی (Looping) قابل تکرارها (Iterables) تکرارگرها (Iterators) مولدها (Generators) کنترل جریان (Control Flow) کالبک ها (Callbacks) غیرهمزمان (Asynchronous) پرامیس ها (Promises) Async/Await (Async/Await) ماژول ها: استاتیک (Modules Static) ماژول ها: داینامیک (Modules Dynamic) DOM معرفی (DOM Intro) DOM متدها (DOM Methods) DOM سند (DOM Document) DOM عناصر (DOM Elements) DOM HTML (DOM HTML) DOM فرم ها (DOM Forms) DOM CSS (DOM CSS) DOM انیمیشن ها (DOM Animations) DOM رویدادها (DOM Events) شنونده رویداد (DOM Event Listener) پیمایش DOM (DOM Navigation) گره های DOM (DOM Nodes) مجموعه های DOM (DOM Collections) لیست گره های DOM (DOM Node Lists) پنجره (Window) نمایشگر (Screen) Location (Location) تاریخچه (History) Navigator (Navigator) پنجره های هشدار (Popup Alert) زمان بندی (Timing) کوکی ها (Cookies) مقدمه Web API (Web API Intro) Validation API (Web Validation API) History API (Web History API) Web Storage API (Web Storage API) Web Worker API (Web Worker API) Fetch API (Web Fetch API) Geolocation API (Web Geolocation API) AJAX معرفی (AJAX Intro) AJAX درخواست (AJAX Request) AJAX پاسخ (AJAX Response) AJAX فایل XML (AJAX XML File) AJAX و PHP (AJAX PHP) AJAX و ASP (AJAX ASP) AJAX پایگاه داده (AJAX Database) AJAX کاربردها (AJAX Applications) AJAX مثال ها (AJAX Examples) JSON معرفی (JSON Intro) JSON نحو (JSON Syntax) JSON در برابر XML (JSON vs XML) انواع داده در JSON (JSON Data Types) JSON Parse (JSON Parse) JSON Stringify (JSON Stringify) اشیا در JSON (JSON Objects) آرایه ها در JSON (JSON Arrays) سرور JSON (JSON Server) JSON و PHP (JSON PHP) JSON و HTML (JSON HTML) JSONP (JSON JSONP) jQuery انتخابگرها (jQuery Selectors) jQuery HTML (jQuery HTML) jQuery CSS (jQuery CSS) jQuery DOM (jQuery DOM) گرافیک (Graphics) Canvas (Canvas) Plotly (Plotly) Chart.js (Chart.js) Google Chart (Google Chart) D3.js (D3.js) DOM نمونه ها (HTML DOM) ورودی HTML (HTML Input) اشیای HTML (HTML Objects) رویدادهای HTML (HTML Events) مرورگر (Browser) ویرایشگر (Editor) کوییز (Quiz) سیلابس (Syllabus) برنامه مطالعه (Study Plan) آمادگی مصاحبه (Interview Prep) بوت کمپ (Bootcamp) گواهینامه (Certificate)
JavaScript

JavaScript — تکرارهای آرایه (Array Iterations)

آخرین بروزرسانی: 1404/08/10

تکرارهای آرایه (Array Iterations)

می خواهیم روی همه اعضای آرایه، کاری انجام دهیم. «تکرار (Iteration)» یعنی گذر از تک تک آیتم ها. با مثال های کوتاه جلو می رویم و فرق متدها را می بینیم.

forEach() — اجرای تابع برای هر آیتم

کالبک (Callback) یعنی تابعی که به متد می دهیم تا روی هر عضو اجرا شود.

const numbers = [45, 4, 9, 16, 25];
let txt = "";
numbers.forEach(myFunction);
function myFunction(value, index, array) {
  txt += value + "<br>";
}

مشاهده در ادیتور

const numbers = [45, 4, 9, 16, 25];
let txt = "";
numbers.forEach(myFunction);
function myFunction(value) {
  txt += value + "<br>";
}

مشاهده در ادیتور

map() — ساخت آرایه جدید

map یک آرایه جدید می سازد. اصل آرایه تغییر نمی کند.

const numbers1 = [45, 4, 9, 16, 25];
const numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
  return value * 2;
}

مشاهده در ادیتور

const numbers1 = [45, 4, 9, 16, 25];
const numbers2 = numbers1.map(myFunction);
function myFunction(value) {
  return value * 2;
}

مشاهده در ادیتور

flatMap() — map سپس تخت کردن

flatMap اول نگاشت می کند، سپس یک سطح آرایه را تخت می کند.

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap(function(x) {
  return x * 2;
});

مشاهده در ادیتور

filter() — نگه داشتن آیتم های قبول شده

filter فقط آیتم هایی را نگه می دارد که شرط را پاس کنند.

const numbers = [45, 4, 9, 16, 25];
const over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
  return value > 18;
}

مشاهده در ادیتور

const numbers = [45, 4, 9, 16, 25];
const over18 = numbers.filter(myFunction);
function myFunction(value) {
  return value > 18;
}

مشاهده در ادیتور

reduce() — جمع کردن به یک مقدار

reduce کل آرایه را به یک مقدار تبدیل می کند. جهت پیش فرض چپ به راست است.

const numbers = [45, 4, 9, 16, 25];
let sum = numbers.reduce(myFunction);
function myFunction(total, value, index, array) {
  return total + value;
}

مشاهده در ادیتور

const numbers = [45, 4, 9, 16, 25];
let sum = numbers.reduce(myFunction);
function myFunction(total, value) {
  return total + value;
}

مشاهده در ادیتور

const numbers = [45, 4, 9, 16, 25];
let sum = numbers.reduce(myFunction, 100);
function myFunction(total, value) {
  return total + value;
}

مشاهده در ادیتور

reduceRight() — از راست به چپ

reduceRight مثل reduce است؛ اما از راست به چپ می رود.

const numbers = [45, 4, 9, 16, 25];
let sum = numbers.reduceRight(myFunction);
function myFunction(total, value, index, array) {
  return total + value;
}

مشاهده در ادیتور

const numbers = [45, 4, 9, 16, 25];
let sum = numbers.reduceRight(myFunction);
function myFunction(total, value) {
  return total + value;
}

مشاهده در ادیتور

every() — آیا همه قبول شدند؟

every بررسی می کند همه آیتم ها شرط را پاس می کنند یا نه.

const numbers = [45, 4, 9, 16, 25];
let allOver18 = numbers.every(myFunction);
function myFunction(value, index, array) {
  return value > 18;
}

مشاهده در ادیتور

const numbers = [45, 4, 9, 16, 25];
let allOver18 = numbers.every(myFunction);
function myFunction(value) {
  return value > 18;
}

مشاهده در ادیتور

some() — آیا بعضی قبول شدند؟

some کافی است یک عضو شرط را پاس کند تا نتیجه true شود.

const numbers = [45, 4, 9, 16, 25];
let someOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
  return value > 18;
}

مشاهده در ادیتور

Array.from() — ساخت آرایه از قابل تکرار

از رشته یا هر «قابل تکرار (Iterable)» می تواند آرایه بسازد.

let text = "ABCDEFG";
Array.from(text);

مشاهده در ادیتور

const myNumbers = [1, 2, 3, 4];
const myArr = Array.from(myNumbers, function(x) {
  return x * 2;
});

مشاهده در ادیتور

keys() و entries() — پیمایش کلید و جفت ها

keys یک «تکرارگر (Iterator)» از ایندکس ها می دهد. entries جفت [ایندکس، مقدار].

const fruits = ["Banana", "Orange", "Apple", "Mango"];
const keys = fruits.keys();
for (let x of keys) {
  text += x + "<br>";
}

مشاهده در ادیتور

const fruits = ["Banana", "Orange", "Apple", "Mango"];
const f = fruits.entries();
for (let x of f) {
  document.getElementById("demo").innerHTML += x;
}

مشاهده در ادیتور

with() — بروزرسانی امن عضو

with یک کپی جدید می سازد و فقط یک ایندکس را عوض می کند.

const months = ["Januar", "Februar", "Mar", "April"];
const myMonths = months.with(2, "March");

مشاهده در ادیتور

Spread (...) — بازکردن آرایه

Spread عناصر آرایه را جدا می کند. برای ترکیب کردن هم عالی است.

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [...arr1, ...arr2];

مشاهده در ادیتور

const q1 = ["Jan", "Feb", "Mar"];
const q2 = ["Apr", "May", "Jun"];
const q3 = ["Jul", "Aug", "Sep"];
const q4 = ["Oct", "Nov", "Des"];
const year = [...q1, ...q2, ...q3, ...q4];

مشاهده در ادیتور

const arr1 = [1, 2, 3];
const arr2 = [...arr1];

مشاهده در ادیتور

const numbers = [23, 55, 21, 87, 56];
let minValue = Math.min(...numbers);
let maxValue = Math.max(...numbers);

مشاهده در ادیتور

Rest (...) — جمع کردن بقیه آیتم ها

Rest در «ساختاردهی (Destructuring)» بقیه عناصر را در یک آرایه جمع می کند.

let a, rest;
const arr1 = [1, 2, 3, 4, 5, 6, 7, 8];
[a, ...rest] = arr1;

مشاهده در ادیتور

let a, b, rest;
const arr1 = [1, 2, 3, 4, 5, 6, 7, 8];
[a, b, ...rest] = arr1;

مشاهده در ادیتور

ادامه مسیر «تکرارهای آرایه»

برای جستجو برو به جستجوی آرایه. برای مرتب کردن نتایج برو به مرتب سازی آرایه. همچنین صفحه تکرارهای آرایه را نشانه گذاری کن.

جمع بندی سریع

  • forEach فقط اجرا می کند؛ چیزی برنمی گرداند.
  • map و filter آرایه جدید می سازند.
  • reduce خروجی تک مقداری می دهد.
  • every برای همه؛ some برای بعضی هاست.
  • spread باز می کند؛ rest جمع می کند.