مرتب سازی ارایه ها در JavaScript
یادگیری 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});
مشاهده مثالتابع مقایسه
هدف تابع مقایسه این است که یک دستور مرتب سازی جایگزین را تعریف کنیم.
تابع مقایسه باید مقدار منفی، صفر یا مثبت را بسته باشد، بسته به استدلال:
هنگامی که تابع 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 برای پیدا کردن بیشترین تعداد در یک آرایه استفاده کنید:
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 برای پیدا کردن کمترین تعداد در یک آرایه استفاده کنید:
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
مشاهده مثالMath.min.apply ([1، 2، 3]) برابر با Math.min (1، 2، 3) است.
روشهای حداقل / حداکثر جاوا اسکریپت
سریعترین راه استفاده از روش "home made" است.
این تابع با استفاده از یک آرایه مقایسه و هر مقدار با بالاترین مقدار را پیدا می کند:
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;
}
مشاهده مثالمرتب سازی آرایه های شیء
آرایه های جاوا اسکریپت اغلب دارای اشیا هستند:
{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;
});
مشاهده مثال
نظرات