آرایهها یکی از اصلیترین انواع داده در جاوااسکریپت هستند و کاربرد زیادی دارند. در مصاحبههای شغلی معمولاً از شما میپرسند که چطور دادهها را با متدهای آرایه مدیریت میکنید. در ادامه مهمترین متدهای آرایه را بررسی میکنیم.
کارکرد: اضافه کردن یک یا چند عنصر به انتهای آرایه.
ورودی: یک یا چند مقدار برای اضافه شدن.
خروجی: طول جدید آرایه بعد از اضافه شدن عناصر.
تغییر آرایه اصلی: بله
مثال:
let numbers = [1, 2, 3];
let newLength = numbers.push(4, 5);
console.log(numbers); // [1, 2, 3, 4, 5]console.log(newLength); // 5
کارکرد: حذف آخرین عنصر آرایه و برگرداندن آن.
ورودی: ندارد
خروجی: مقدار حذف شده
تغییر آرایه اصلی: بله
مثال:
let fruits = ["apple", "banana", "orange"];
let lastFruit = fruits.pop();
console.log(fruits); // ["apple", "banana"]console.log(lastFruit); // "orange"
کارکرد: حذف اولین عنصر آرایه و برگرداندن آن.
ورودی: ندارد
خروجی: عنصر حذف شده
تغییر آرایه اصلی: بله
مثال:
let queue = [10, 20, 30];
let first = queue.shift();
console.log(queue); // [20, 30]console.log(first); // 10
کارکرد: اضافه کردن یک یا چند عنصر به ابتدای آرایه.
ورودی: یک یا چند مقدار
خروجی: طول جدید آرایه
تغییر آرایه اصلی: بله
مثال:
let numbers = [2, 3];
numbers.unshift(0, 1);
console.log(numbers); // [0, 1, 2, 3]
کارکرد: برش بخشی از آرایه و برگرداندن یک آرایه جدید
ورودی: start index, end index (end اختیاری، عنصر end شامل نمیشود)
خروجی: آرایه جدید
تغییر آرایه اصلی: خیر
مثال:
let arr = [1, 2, 3, 4, 5];
let part = arr.slice(1, 4);
console.log(part); // [2, 3, 4]console.log(arr); // [1, 2, 3, 4, 5]
کارکرد: حذف، جایگزینی یا اضافه کردن عناصر در یک آرایه
ورودی: start index, deleteCount, items…
خروجی: آرایهای شامل عناصر حذف شده
تغییر آرایه اصلی: بله
مثالها:
let arr = [1, 2, 3, 4, 5];
// حذفlet removed = arr.splice(2, 2);
console.log(arr); // [1, 2, 5]console.log(removed); // [3, 4]
// اضافه کردن
arr.splice(2, 0, 6, 7);
console.log(arr); // [1, 2, 6, 7, 5]
// جایگزینی
arr.splice(1, 2, 8, 9);
console.log(arr); // [1, 8, 9, 7, 5]
کارکرد: اجرای یک callback برای هر عنصر آرایه
ورودی: تابع callback با پارامترهای (element, index, array)
خروجی: ندارد (undefined)
تغییر آرایه اصلی: خیر (مگر callback تغییر دهد)
مثال:
let arr = [1, 2, 3];
arr.forEach(num => console.log(num * 2));
// 2, 4, 6
کارکرد: تولید یک آرایه جدید با نتایج callback
ورودی: تابع callback با پارامترهای (element, index, array)
خروجی: آرایه جدید
تغییر آرایه اصلی: خیر
مثال:
let numbers = [1, 2, 3];
let squared = numbers.map(n => n * n);
console.log(squared); // [1, 4, 9]console.log(numbers); // [1, 2, 3]
کارکرد: ایجاد یک آرایه جدید با عناصر که شرط callback را دارند
ورودی: تابع callback (true/false)
خروجی: آرایه جدید
تغییر آرایه اصلی: خیر
مثال:
let nums = [1, 2, 3, 4, 5];
let even = nums.filter(n => n % 2 === 0);
console.log(even); // [2, 4]
کارکرد: کاهش آرایه به یک مقدار واحد با callback
ورودی: callback(accumulator, currentValue, index, array), initialValue (اختیاری)
خروجی: مقدار واحد (number, string, object…)
تغییر آرایه اصلی: خیر
مثال:
let nums = [1, 2, 3, 4];
let sum = nums.reduce((acc, n) => acc + n, 0);
console.log(sum); // 10
کارکرد: برگرداندن اولین عنصر که شرط callback را دارد
ورودی: تابع callback (true/false)
خروجی: عنصر پیدا شده یا undefined
تغییر آرایه اصلی: خیر
مثال:
let users = [{id:1,name:"Ali"}, {id:2,name:"Sara"}];
let user = users.find(u => u.id === 2);
console.log(user); // {id:2, name:"Sara"}
کارکرد: بررسی وجود یک عنصر در آرایه
ورودی: مقدار برای چک کردن, start index (اختیاری)
خروجی: true/false
تغییر آرایه اصلی: خیر
مثال:
let fruits = ["apple","banana"];
console.log(fruits.includes("banana")); // trueconsole.log(fruits.includes("orange")); // false
کارکرد: مرتب کردن آرایه
ورودی: callback برای مقایسه (اختیاری)
خروجی: آرایه مرتب شده
تغییر آرایه اصلی: بله
مثال:
let nums = [3, 1, 4, 2];
nums.sort((a,b) => a-b);
console.log(nums); // [1,2,3,4]
کارکرد: معکوس کردن آرایه
ورودی: ندارد
خروجی: آرایه معکوس شده
تغییر آرایه اصلی: بله
مثال:
let arr = [1,2,3];
arr.reverse();
console.log(arr); // [3,2,1]
کارکرد: پیدا کردن اولین موقعیت (اندیس) یک عنصر در آرایه
ورودی: مقدار برای پیدا کردن, start index (اختیاری)
خروجی: اندیس عنصر یا -1 اگر پیدا نشد
تغییر آرایه اصلی: خیر
مثال:
let fruits = ["apple", "banana", "orange", "banana"];
console.log(fruits.indexOf("banana")); // 1console.log(fruits.indexOf("grape")); // -1
کارکرد: پیدا کردن آخرین موقعیت یک عنصر در آرایه
ورودی: مقدار برای پیدا کردن, start index (اختیاری)
خروجی: اندیس عنصر یا -1
تغییر آرایه اصلی: خیر
مثال:
let fruits = ["apple", "banana", "orange", "banana"];
console.log(fruits.lastIndexOf("banana")); // 3
کارکرد: بررسی اینکه همه عناصر آرایه شرطی را داشته باشند
ورودی: callback (true/false)
خروجی: true/false
تغییر آرایه اصلی: خیر
مثال:
let nums = [2, 4, 6];
console.log(nums.every(n => n % 2 === 0)); // true
کارکرد: پیدا کردن اندیس اولین عنصری که شرط callback را داشته باشد
ورودی: callback (true/false)
خروجی: اندیس یا -1
تغییر آرایه اصلی: خیر
مثال:
let users = [{id:1},{id:2},{id:3}];
let idx = users.findIndex(u => u.id === 2);
console.log(idx); // 1
کارکرد: ترکیب دو یا چند آرایه و برگرداندن آرایه جدید
ورودی: یک یا چند آرایه یا مقدار
خروجی: آرایه جدید
تغییر آرایه اصلی: خیر
مثال:
let arr1 = [1,2];
let arr2 = [3,4];
let merged = arr1.concat(arr2);
console.log(merged); // [1,2,3,4]console.log(arr1); // [1,2]
کارکرد: تبدیل آرایه به رشته با جداکننده مشخص
ورودی: separator (اختیاری، پیشفرض ,)
خروجی: رشته
تغییر آرایه اصلی: خیر
مثال:
let words = ["Hello", "World"];
console.log(words.join(" ")); // "Hello World"console.log(words.join(",")); // "Hello,World"
کارکرد: صاف کردن آرایههای تو در تو تا عمق مشخص
ورودی: عمق (depth) اختیاری، پیشفرض 1
خروجی: آرایه جدید
تغییر آرایه اصلی: خیر
مثال:
let arr = [1, [2, [3, 4]]];
console.log(arr.flat()); // [1, 2, [3,4]]console.log(arr.flat(2)); // [1, 2, 3, 4]"
کارکرد: ترکیب map و flat با عمق 1
ورودی: callback
خروجی: آرایه جدید
تغییر آرایه اصلی: خیر
مثال:
let arr = [1, 2, 3];
let result = arr.flatMap(n => [n, n*2]);
console.log(result); // [1,2,2,4,3,6]
محمدمهدی حسینیان، برنامهنویس فرانتاند با سه سال سابقهی حرفهای در توسعهی وب با React و Next.js هستم. در این مدت روی پروژههای متنوعی کار کردهام و تجربهی بالایی در طراحی و پیادهسازی رابطهای کاربری بهینه و تعاملی دارم. عاشق یادگیری، چالشهای فنی و ارتقای مهارتهای خودم هستم. همچنین به تدریس برنامهنویسی علاقه دارم و سعی میکنم دانش خودم را با دیگران به اشتراک بگذارم. هدفم توسعهی محصولات باکیفیت و بهبود تجربهی کاربری در دنیای وب است.
نظرات و پرسش ها
محمدعلی رهرو
سلام بسیار مفید و کاربردی بود تشکر🌹
محمدمهدی حسینیان
خوشحالم که برات مفید بوده اقای رهروی عزیز