مرتب‌سازی آرایه‌ها در جاوااسکریپت

javascript array sort explanation
20 آبان 1403

زمانی که صحبت از جاوااسکریپت و کار با آرایه‌ها می‌شود، یکی از روش‌های رایج و مفید، استفاده از تابع sort() است. این روش ترتیب عناصر یک آرایه را بر اساس شرط خاصی تغییر می‌دهد و امکان مرتب‌سازی سفارشی یا از پیش تعریف‌شده‌ای را فراهم می‌کند.
در دنیای واقعی، مرتب‌سازی آرایه‌ها می‌تواند برای فهرست‌بندی داده‌ها، نمایش داده‌ها به کاربر و یا مرتب‌سازی لیست‌هایی مانند قیمت‌ها یا امتیازات کاربرد داشته باشد. در این بخش با چند مثال ساده و توضیحات کافی، شما را با روش کار این تابع آشنا خواهیم کرد.
ابتدا بیایید نگاهی بیندازیم به نحوه عملکرد تابع sort() در ساده‌ترین حالت خود. این تابع به صورت پیش‌فرض اعداد را به روش Lexicographical (ترتیب واژه‌ای) مرتب می‌کند که ممکن است برای عددهای مختلف همیشه کارساز نباشد. برای مثال اگر آرایه ما شامل [3, 12, 1] باشد، نتیجه به صورت [1, 12, 3] خواهد بود که شاید آنچه انتظار می‌رود نباشد. در این شرایط باید تابع مرتب‌سازی سفارشی ایجاد کنیم.
استفاده از تابع مرتب‌سازی سفارشی به شما این امکان را می‌دهد که براساس نیاز خود، چیدمان داده‌ها را تغییر دهید. به این صورت که می‌توانید از یک تابع compare برای تعیین ترتیب عناصر استفاده کنید. این تابع دو پارامتر می‌پذیرد و آن‌ها را با یکدیگر مقایسه می‌کند. نتیجه مقایسه می‌تواند ترتیب نهایی عناصر را مشخص کند.
در ادامه قصد داریم با یک مثال عملی از مرتب‌سازی عناصر آرایه به شیوه‌ای که اعداد را در حالت طبیعی (از کم به زیاد) مرتب می‌کند، آشنا شویم. همینطور شیوه معکوس (از زیاد به کم) را نیز بررسی خواهیم کرد. این مثال‌ها به شما کمک خواهند کرد تا در سناریوهای مختلف توانایی پیدا کردن راه حل مناسب را داشته باشید.

مثال کد جاوااسکریپت برای مرتب‌سازی آرایه


    const numbers = [40, 100, 1, 5, 25, 10];
    
    // مرتب‌سازی از کم به زیاد
    numbers.sort((a, b) => a - b);
    console.log(numbers); // خروجی: [1, 5, 10, 25, 40, 100]

    // مرتب‌سازی از زیاد به کم
    numbers.sort((a, b) => b - a);
    console.log(numbers); // خروجی: [100, 40, 25, 10, 5, 1]
    

توضیح خط به خط کد بالا:

const numbers = [40, 100, 1, 5, 25, 10];
این خط یک آرایه از اعداد مختلف به نام numbers ایجاد می‌کند.
numbers.sort((a, b) => a - b);
این خط تابع مرتب‌سازی sort() را فراخوانی می‌کند که با تابع compare سفارشی اجرا می‌شود. تفاوت بین دو عدد در هر مقایسه بررسی می‌شود. اگر عدد اول کمتر باشد، منفی برمی‌گردد و باعث جابجایی می‌شود.
console.log(numbers); // خروجی: [1, 5, 10, 25, 40, 100]
این خط، آرایه مرتب‌شده را به صورت صعودی (از کم به زیاد) در کنسول نمایش می‌دهد.
numbers.sort((a, b) => b - a);
مجدد از sort() استفاده می‌شود، ولی این بار تفاوت b و a برای مرتب‌سازی نزولی (از زیاد به کم) بررسی می‌شود.
console.log(numbers); // خروجی: [100, 40, 25, 10, 5, 1]
این خط، آرایه مرتب‌شده نزولی را در کنسول نشان می‌دهد.

سوالات متداول

؟

چگونه می‌توان آرایه‌ای از حروف را مرتب‌سازی کرد؟

؟

آیا می‌توان آرایه‌ای از اشیا را با sort مرتب‌سازی کرد؟

؟

آیا sort() method متد اصلی آرایه را تغییر می‌دهد؟