021-28423015

مرتب سازی ارایه ها در JavaScript

مرتب کردن آرایه

متد sort() یک الگوریتم را به صورت حروف الفبا مرتب میکند:

مرتب سازی آرایه
 var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // Sorts the elements of fruits 
مشاهده مثال

معکوس کردن یک آرایه

روش reverse()  عناصر در آرایه را تغییر می دهد.

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

معکوس کردن آرایه
 var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // Sorts the elements of fruits
fruits.reverse();         // Reverses the order of the elements 
مشاهده مثال

ترتیب عددی

به صورت پیش فرض، تابع sort() مقادیر را به عنوان رشته ها مرتب می کند.
این برای رشته ها ("اپل" قبل از "موز") کار می کند.
با این حال، اگر اعداد به صورت رشته طبقه بندی شوند، "25" بزرگتر از "100" است، زیرا "2" بزرگتر از "1" است.
به این دلیل، مرتب کردن بر اساس اعداد، روش sort () نتیجه نادرستی خواهد داشت.
شما می توانید این را با ارائه یک تابع مقایسه کنید:

مرتب سازی اعداد
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
مشاهده مثال

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

مرتب سازی نزولی
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
مشاهده مثال

تابع مقایسه

هدف تابع مقایسه این است که یک دستور مرتب سازی جایگزین را تعریف کنیم.
تابع مقایسه باید مقدار منفی، صفر یا مثبت را بسته باشد، بسته به استدلال:

function(a, b){return a-b}

هنگامی که تابع sort () دو مقادیر را مقایسه می کند، مقادیر را به تابع مقایسه می فرستد و مقادیر را با توجه به مقدار بازگشتی (منفی، صفر، مثبت) مرتب می کند.
مثال:
در مقایسه با 40 و 100، روش sort () عملکرد مقایسه را (40،100) می نامد.
تابع محاسبه 40-100، و بازگشت -60 (مقدار منفی).
تابع مرتب سازی 40 به عنوان مقدار کمتر از 100 مرتب می شود.
شما می توانید از این قطعه کد برای مرتبسازی با عدد و حروف الفبایی استفاده کنید:

تابع مقایسه
 <button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;

function myFunction1() {
    points.sort();
    document.getElementById("demo").innerHTML = points;
}
function myFunction2() {
    points.sort(function(a, b){return a - b});
    document.getElementById("demo").innerHTML = points;
}
</script> 
مشاهده مثال

مرتب سازی آرایه به صورت تصادفی

مرتب سازی رندوم
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});
مشاهده مثال

بیشترین (یا کمترین) مقدار آرایه را پیدا کنید

هیچ توابع داخلی برای پیدا کردن مقدار حداکثر یا حداقل در یک آرایه وجود ندارد.
با این حال، پس از مرتب سازی آرایه، می توانید از شاخص برای به دست آوردن بالاترین و کمترین مقدار استفاده کنید.
مرتب سازی صعودی:

پیدا کردن بزرگترین و کوچکترین
 var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value 
مشاهده مثال

مرتب سازی نزولی:

مرتب سازی نزولی
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value 
مشاهده مثال

مرتب سازی آرایه در کل یک روش بسیار ناکارآمد است اگر فقط می خواهید بالاترین (یا کمترین) ارزش را پیدا کنید.

با استفاده از Math.max () در آرایه

شما می توانید از Math.max.apply برای پیدا کردن بیشترین تعداد در یک آرایه استفاده کنید:

متد Math.max()
function myArrayMax(arr) {
    return Math.max.apply(null, arr);
}
مشاهده مثال

 

Math.max.apply ([1، 2، 3]) برابر با Math.max (1، 2، 3) است.

با استفاده از Math.min () در آرایه

شما می توانید از Math.min.apply برای پیدا کردن کمترین تعداد در یک آرایه استفاده کنید:

متد Math.min()
function myArrayMin(arr) {
    return Math.min.apply(null, arr);
}
مشاهده مثال

Math.min.apply ([1، 2، 3]) برابر با Math.min (1، 2، 3) است.

روشهای حداقل / حداکثر جاوا اسکریپت

سریعترین راه استفاده از روش "home made" است.
این تابع با استفاده از یک آرایه مقایسه و هر مقدار با بالاترین مقدار را پیدا می کند:

متد Min / Max
function myArrayMax(arr) {
    var len = arr.length
    var max = -Infinity;
    while (len--) {
        if (arr[len] > max) {
            max = arr[len];
        }
    }
    return max;
} 
مشاهده مثال

این تابع از طریق یک آرایه با مقایسه هر مقدار با کمترین مقدار یافت می شود.

متد min
function myArrayMin(arr) {
    var len = arr.length
    var min = Infinity;
    while (len--) {
        if (arr[len] < min) {
            min = arr[len];
        }
    }
    return min;
}
مشاهده مثال

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

آرایه های جاوا اسکریپت اغلب دارای اشیا هستند:

var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];

حتی اگر اشیاء دارای خواص انواع داده های مختلف باشند، برای مرتب کردن آرایه می توان از روش sort()  استفاده کرد.
راه حل این است که یک تابع مقایسه را برای مقایسه مقادیر بنویسیم:

مرتب سازی شی آرایه
 cars.sort(function(a, b){return a.year - b.year}); 
مشاهده مثال

مقایسه خواص رشته کمی پیچیده تر است:

مقایسه
 cars.sort(function(a, b){
    var x = a.type.toLowerCase();
    var y = b.type.toLowerCase();
    if (x < y) {return -1;}
    if (x > y) {return 1;}
    return 0;
}); 
مشاهده مثال

 

نظر شما

لطفا نام و نام خانوادگی خود را وارد کنید
لطفا ایمیل خود را وارد کنید لطفا ایمیل صحیح وارد کنید.
لطفا متن نظر خود را وارد کنید
>

نظرات

سعید با سلام من زیاد جاوا اسکریپ بلد نیستم یه کتابی قراه امتحان بدم یه فصلش جاوا اسکریپته سوالم که قراره بیاد اینه که 10 عدد بگیرد و max , min و میانگینشون بده میشه بگین چطور میتونم بنویسم اینو خیلی ممنون میشم
مهدی احدی سعید عزیز طبق هفتمین مثال این درس شما میتوانید در آرایه ای که 10 عدد دریافت میکنه بزرگترین و کوچکترین عدد آرایه رو پیدا کنید. (a-b) کوچکترین و (b-a) بزرگترین عدد آرایه رو پیدا میکنه. موفق باشید

یادگیری JavaScript

مقالات و دروس

عضویت در خبرنامه شرکت نرم افزاری وب مهراز

برای اطلاع از بسته ها ، تخفیف های استثنایی و تازه های ما به خبرنامه وب مهراز بپیوندید.

لطفا شماره همراه صحیح وارد کنید.
لطفا ایمیل صحیح وارد کنید.

مقالات مرتبط