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

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

دسته بندی : آموزش Javascript سطح مقاله : متوسط زمان مطالعه : دقیقه آخرین بروز رسانی: 18 اسفند 1399

از آنجا که آرایه های جاوا اسکریپت می توانند اشیا زیادی را درون خود ذخیره کنند ، مرتب سازی آنها می تواند چالش برانگیز باشد. این آموزش شما را با روش های آرایه مرتب سازی جاوا اسکریپت آشنا می کند.

شما روش های مختلفی را می آموزید که چگونه می توانید یک آرایه JavaScript را مرتب کنید. همچنین می توانید نمونه های بی شماری را بررسی کنید ، که به شما در درک بهتر مطالب کمک می کند.

نکات اصلی مرتب سازی  آرایه جاوا اسکریپت:

  • یکی از قدرتمندترین روش های آرایه ، مرتب سازی () است.
  • تکنیک های مرتب سازی آرایه JS به شما کمک می کند تا آرایه های خود را بر اساس حروف الفبا ، اعداد ، به ترتیب نزولی و غیره مرتب کنید.

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

روش مرتب سازی همه اشیا آرایه را بر اساس حروف الفبا مرتب می کند – با A شروع می شود ، و با Z پایان می یابد. این می تواند هنگام تهیه لیست هایی که به ترتیب الفبایی موارد نیاز دارند مفید باشد:

var cars = ["Peugeot", "Mercedes", "BMW", "Audi"];
cars.sort(); // Sorting the elements of cars

برای مرتب سازی آرایه می توانید از کد (JavaScript) حاوی کدهایی که به ترتیب تصادفی نوشته شده اند نیز استفاده کنید:

var points = [30, 200, 2, 3, 15, 10];
points.sort((x, y) => { return 0.5 - Math.random() });

روش معکوس () همانند مرتب سازی () است ، زیرا برای مرتب سازی اشیا ar آرایه جاوا اسکریپت استفاده می شود. با این حال ، نتیجه ای به ترتیب حروف الفبا معکوس ایجاد می کند. این یک نظم نزولی ایجاد می کند. در این حالت ، لیست با اشیایی به نام Z شروع می شود و با A به پایان می رسد:

var cars = ["Peugeot", "Audi", "BMW", "Mercedes"];
cars.sort();            // Sorting the elements of cars
cars.reverse();         // Reversing the order of the elements

مقایسه عناصر

تابع مرتب سازی () مقادیر را به عنوان داده متنی (رشته ها) می خواند. رشته ای مانند “30” بخاطر کاراکتر اولش بالاتر از “200” خوانده می شود: “3” بزرگتر از “2” است. بنابراین ، در لیست خود پاسخ های اشتباهی خواهید گرفت. با استفاده از تابع مقایسه () می توان این مشکل را حل کرد:

var point = [30, 200, 2, 3, 15, 10];
point.sort((x, y) => { return x - y });

برای مرتب سازی آرایه های نزولی ، همین روش اعمال می شود:

var point = [30, 200, 2, 3, 15, 10];
point.sort((x, y) => { return y - x });

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

(x, y) => { return x - y }

در مثال زیر ، وقتی 20 و 50 با هم مقایسه می شوند ، روش مرتب سازی () فراخوانی تابع (20،50) است. سپس ، محاسبه 20-50 اتفاق می افتد و پاسخ -30 است (مقدار منفی). اکنون ، تابع مرتب سازی جاوا اسکریپت با مرتب سازی آرایه ای انجام می شود که مقدار پایین تر از آن 20 است نه 50:

var points = [20, 50, 2, 4, 15, 10];
document.getElementById("test").innerHTML = points; 

function sortAlphabetically() {
 points.sort();
 document.getElementById("test").innerHTML = points;
}
function sortNumerically() {
 points.sort((a, b) => { return a - b });
 document.getElementById("test").innerHTML = points;
}

یافتن مقادیر مشخص شده

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

var points = [30, 200, 2, 3, 15, 10];
points.sort((x, y) => { return x - y });
var points = [30, 200, 2, 3, 15, 10];
points.sort((x, y) => { return y - x });

()Math.max

وقتی می خواهید بیشترین تعداد را در کل آرایه پیدا کنید ، می توانید از Math.max.apply استفاده کنید. به این ترتیب ، برای مرتب سازی کل لیست ، نیازی به استفاده از تابع عددی مرتب سازی جاوا اسکریپت نیست. عملکرد فقط بالاترین عدد را برمی گرداند:

function mArrayMax(ar) {
    return Math.max.apply(null, ar);
}

()Math.min

مشابه روش ()Math.max ، می توانید کمترین تعداد را در کل آرایه با استفاده از روش ()Math.min پیدا کنید. این فقط کمترین عدد در آرایه را برمی گرداند:

function mArrayMin(ar) {
    return Math.min.apply(null, ar);
}

حداقل / حداکثر روش های سفارشی

کمترین زمان استفاده از روش مرتب سازی آرایه JS است که ، فرض کنیم ، خانگی است. هر مقدار با بالاترین مقدار واقع در حلقه while مقایسه می شود. امکاناتی را که وجود دارد بررسی کنید:

function mArrayMax(ar) {
    var length = ar.length
    var maxim = -Infinity;
    while (length--) {
        if (ar[length] > maxim) {
            maxim = ar[length];
        }
    }
    return maxim;
}

هر مقدار با کمترین مقدار واقع در این حلقه مقایسه می شود:

function mArrayMin(ar) {
    var length = ar.length
    var minim = Infinity;
    while (length--) {
        if (ar[len] < minim) {
            minim = ar[length];
        }
    }
    return minim;
}

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

در جاوا اسکریپت ، یک آرایه اغلب دارای اشیا است ، مانند آنچه در مثال زیر نشان داده شده است:

var car = [
  { type: "Audi", year: 2017 },
  { type: "Toyota", year: 2009 },
  { type: "Mercedes", year: 2011 },
];

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

cars.sort((x, y) => { return x.year - y.year });

کار با ویژگی های رشته کمی بیشتر است ، اما هنوز هم قابل کنترل است:

cars.sort((x, y) => {
    var a = x.type.toLowerCase();
    var b = y.type.toLowerCase();
    if (a < b) { 
        return -1; 
    } else if (a > b) {
        return 1;
    } else {
        return 0;
    }
});

خلاصه مرتب سازی آرایه جاوا اسکریپت:

  • آرایه مرتب سازی روشهای جاوا اسکریپت می توانند به شما در مرتب سازی آرایه ها به ترتیب حروف الفبا ، معکوس ، تصادفی ، عددی ، نزولی و صعودی کمک کنند.
  • Array sort function آرایه ای است که بیشترین استفاده را خواهید کرد.
  • تکنیک های آرایه مرتب سازی جاوا اسکریپت هنگامی که نیاز به مرتب سازی لیست یا یافتن بالاترین و کمترین مقدار دارید بسیار مفید است.

این مقاله چقدر براتون مفید بود؟

اولین امتیاز را ثبت کنید😊