میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

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

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

در این درس انواع روش های مرتب سازی آرایه در جاوا اسکریپت را با هم بررسی می کنیم.

 

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

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

var fruits = [“Banana”“Orange”“Apple”“Mango”];
fruits.sort();

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

تابع reverse() ترتیب عناصر را در آرایه معکوس می کند.

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

var fruits = [“Banana”“Orange”“Apple”“Mango”];
fruits.sort();        // First sort the elements of fruits
fruits.reverse();

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

به طور پیش فرض، تابع sort() مقادیر را به عنوان رشته در نظر گرفته و بر اساس حروف الفبا (انگلیسی) مرتب می کند.

این روش برای رشته ها (“Apple” قبل از “Banana”) بخوبی کار می کند.

با این حال، اگر اعداد به صورت رشته در نظر گرفته شوند، “۲۵” بزرگتر از “۱۰۰” است، زیرا “۲” بزرگتر از “۱” است.

به همین دلیل، روش sort() هنگام مرتب سازی اعداد ، نتیجه نادرستی تولید می کند.

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

var points = [40۱۰۰۱۵۲۵۱۰];
points.sort(function(a, b){return a – b});

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

var points = [40۱۰۰۱۵۲۵۱۰];
points.sort(function(a, b){return b – a});

تابع مقایسه

هدف تابع مقایسه این است که یک روش مرتب سازی جایگزین را تعریف کنیم

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

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

هنگامی که تابع sort()دو مقدار را مقایسه می کند، مقادیر را به تابع مقایسه می فرستد و سپس مقادیر را با توجه به مقدار بازگشتی (منفی، صفر، مثبت) مرتب می کند.

اگر نتیجه منفی باشد a قبل از b قرار می گیرد.

اگر نتیجه مثبت باشد b قبل از a قرار می گیرد.

اگر نتیجه ۰ باشد هیچ تغییری در مرتب سازی دو مقدار اعمال نمی شود.

مثال:

تابع مقایسه همه مقادیر در آرایه را مقایسه می کند، در هر زمان دو مقدار؛ (a, b).

در مقایسه مقادیر ۴۰ و ۱۰۰، متد sort()، تابع مقایسه (۱۰۰، ۴۰) را فراخوانی می کند.

تابع مقدار ۱۰۰ – ۴۰ را (a - b) محاسبه کرده و از آنجایی که نتیجه منفی است (۶۰-)، تابع مرتب سازی ۴۰ را به عنوان مقدار کمتر از ۱۰۰ مرتب می کند.

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

<button onclick=”myFunction1()”>Sort Alphabetically</button>
<button onclick=”myFunction2()”>Sort Numerically</button>

<p id=”demo”></p>

<script>
var points = [40۱۰۰۱۵۲۵۱۰];
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۱۰۰۱۵۲۵۱۰];
points.sort(function(a, b){return ۰٫۵ – Math.random()});

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

هیچ تابع داخلی برای پیدا کردن مقدار حداکثر یا حداقل در یک آرایه وجود ندارد.

با این حال، پس از مرتب سازی آرایه، می توانید از ایندکس برای به دست آوردن بیشترین و کمترین مقادیر استفاده کنید.

مرتب سازی صعودی:

var points = [40۱۰۰۱۵۲۵۱۰];
points.sort(function(a, b){return a – b});

// اکنون نقاط [۰] حاوی کمترین مقدار است
// و نقاط [point.length-1] حاوی بالاترین مقدار است

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

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

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

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

Math.max.apply(null, [1, 2, 3]) معادل Math.max(1, 2, 3) است.

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

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

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

Math.min.apply(null, [1, 2, 3]) معادل Math.min(1, 2, 3) است.

متد های مینیمم / ماکسیمم جاوا اسکریپت

سریعترین راه این است که از توابع “نوشته شده توسط کاربران” استفاده کنید.

این تابع با استفاده از مقایسه هر مقدار با بالاترین مقدار یافت شده در یک آرایه، بیشترین مقدار (ماکسیمم) آرایه را پیدا می کند

function myArrayMax(arr) {
var len = arr.length;
var max = –Infinity;
while (len–) {
if (arr[len] > max) {
max = arr[len];
}
}
return max;
}

این تابع با استفاده از مقایسه هر مقدار با پایین ترین مقدار یافت شده در یک آرایه، کمترین مقدار (مینیمم) آرایه را پیدا می کند :

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 –۱;}
if (x > y) {return ۱;}
return ۰;
});

 

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

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟