JavaScript – مرتب‌سازی آرایه‌ها (Array Sort)

مرتب‌سازی آرایه‌ها در جاوااسکریپت (JavaScript Sorting Arrays)

متدهای مرتب‌سازی آرایه

  • مرتب‌سازی الفبایی (Alphabetic Sort):
    • sort(): متدی برای مرتب‌سازی آرایه به صورت الفبایی.
    • reverse(): متدی برای برعکس کردن ترتیب عناصر آرایه.
    • toSorted() (از ES2023): متدی برای مرتب‌سازی آرایه بدون تغییر آرایه اصلی.
    • toReversed() (از ES2023): متدی برای برعکس کردن ترتیب آرایه بدون تغییر آرایه اصلی.

مرتب‌سازی اشیاء (Sorting Objects)

  • مرتب‌سازی بر اساس مقادیر عددی یا رشته‌ای موجود در اشیاء.

سینتکس (Syntax) و مثال‌ها

مرتب‌سازی آرایه با sort()

این متد آرایه را به صورت الفبایی مرتب می‌کند:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

برعکس کردن آرایه با reverse()

این متد عناصر آرایه را برعکس می‌کند:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();

ترکیب sort() و reverse()

برای مرتب‌سازی نزولی می‌توان از ترکیب این دو متد استفاده کرد:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

متد toSorted() (جدید در ES2023)

این متد یک نسخه مرتب‌شده از آرایه ایجاد می‌کند و آرایه اصلی را تغییر نمی‌دهد:

const months = ["Jan", "Feb", "Mar", "Apr"];
const sorted = months.toSorted();

متد toReversed() (جدید در ES2023)

این متد یک نسخه برعکس‌شده از آرایه ایجاد می‌کند و آرایه اصلی را تغییر نمی‌دهد:

const months = ["Jan", "Feb", "Mar", "Apr"];
const reversed = months.toReversed();

مرتب‌سازی عددی (Numeric Sort)

مشکل مرتب‌سازی پیش‌فرض

متد sort() به صورت پیش‌فرض مقادیر را به عنوان رشته مرتب می‌کند:

const points = [40, 100, 1, 5, 25, 10];
points.sort();
// نتیجه: [1, 10, 100, 25, 40, 5]

راه‌حل: استفاده از تابع مقایسه (Compare Function)

برای مرتب‌سازی عددی صحیح، تابع مقایسه را مشخص کنید:

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b) { return a - b });
// مرتب‌سازی صعودی
points.sort(function(a, b) { return b - a });
// مرتب‌سازی نزولی

مرتب‌سازی تصادفی (Random Sort)

می‌توانید یک آرایه را به صورت تصادفی مرتب کنید:

const points = [40, 100, 1, 5, 25, 10];
points.sort(function() { return 0.5 - Math.random() });

روش Fisher Yates

یک روش دقیق‌تر برای مرتب‌سازی تصادفی:

const points = [40, 100, 1, 5, 25, 10];
for (let i = points.length - 1; i > 0; i--) {
  let j = Math.floor(Math.random() * (i + 1));
  [points[i], points[j]] = [points[j], points[i]];
}

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

با استفاده از Math.min() و Math.max()

function myArrayMin(arr) {
  return Math.min.apply(null, arr);
}

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

با متد دستی (Home-made Method)

function myArrayMin(arr) {
  let min = Infinity;
  for (let num of arr) {
    if (num < min) min = num;
  }
  return min;
}

function myArrayMax(arr) {
  let max = -Infinity;
  for (let num of arr) {
    if (num > max) max = num;
  }
  return max;
}

مرتب‌سازی آرایه‌های اشیاء

مرتب‌سازی عددی

مرتب‌سازی اشیاء بر اساس مقدار یک خاصیت عددی:

const cars = [
  { type: "Volvo", year: 2016 },
  { type: "Saab", year: 2001 },
  { type: "BMW", year: 2010 }
];
cars.sort(function(a, b) { return a.year - b.year });

مرتب‌سازی رشته‌ای

مرتب‌سازی اشیاء بر اساس مقدار یک خاصیت رشته‌ای:

cars.sort(function(a, b) {
  let x = a.type.toLowerCase();
  let y = b.type.toLowerCase();
  return x < y ? -1 : x > y ? 1 : 0;
});

مرتب‌سازی پایدار (Stable Sort)

از ES2019 به بعد، مرتب‌سازی آرایه‌ها در جاوااسکریپت پایدار شده است:

const myArr = [
  { name: "X00", price: 100 },
  { name: "X01", price: 100 },
  { name: "X02", price: 100 },
  { name: "X03", price: 100 },
  { name: "X04", price: 110 },
  { name: "X05", price: 110 },
  { name: "X06", price: 110 },
  { name: "X07", price: 110 }
];
myArr.sort((a, b) => a.price - b.price);

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.