ترتیب آرایههای JavaScript
- صفحه قبلی جستجوی آرایههای JS
- صفحه بعدی تکرار کردن آرایههای JS
sort()
این روش یکی از قویترین روشهای آرایههاست.
مرتبسازی آرایه
sort()
روش مرتبسازی حروفی آرایهها به ترتیب الفبایی است:
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // عناصر fruits را مرتب میکند
معکوس کردن آرایه
reverse()
این روش عناصر آرایه را معکوس میکند.
شما میتوانید از آن برای مرتبسازی نزولی آرایهها استفاده کنید:
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // عناصر fruits را مرتب میکند fruits.reverse(); // ترتیب عناصر را معکوس میکند
مرتبسازی اعداد
بهطور پیشفرض،sort()
توابع بر اساسرشتههاترتیب برای مرتبسازی ارزشها استفاده میکند.
این توابع برای رشتهها مناسب هستند ("Apple" قبل از "Banana" قرار میگیرد).
اما اگر اعداد بهعنوان رشته مرتب شوند، "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()
این روش به توابع مقایسهای function(40,100) فراخوانی میکند.
این توابع محاسبه میکند 40-100 و سپس -60 (ارزش منفی) را برمیگرداند.
توابع مرتبسازی عدد 40 را بهعنوان ارزش کمتر از 100 در نظر میگیرد.
شما میتوانید از قطعه کد زیر برای تست مرتبسازی عددی و الفبایی استفاده کنید:
<button onclick="myFunction1()">با ترتیب الفبایی مرتب شود</button> <button onclick="myFunction2()">با ترتیب عددی مرتب شود</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()});
پیدا کردن بیشترین (یا کمترین) عدد آرایه
JavaScript هیچ تابع داخلی برای پیدا کردن بیشترین یا کمترین عدد در آرایه ارائه نمیدهد.
البته، پس از مرتب کردن آرایه، میتوانید از شمارههای مجاور برای دستیابی به بیشترین یا کمترین عدد استفاده کنید.
ترتیب افزایشی:
مثال
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // حالا points[0] شامل کمترین عدد است // حالا points[points.length-1] شامل بیشترین عدد است
ترتیب کاهشی:
مثال
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // حالا points[0] شامل بیشترین عدد است // حالا points[points.length-1] شامل کمترین عدد است
اگر تنها به دنبال پیدا کردن بیشترین یا کمترین عدد هستید، مرتب کردن کل آرایه روشی بسیار کمefficiency است.
برای استفاده از 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)
。
روشهای JavaScript من برای Min / Max
最快ترین راه حل استفاده از روش «ساختیابی» است.
این تابع از طریق آرایه میگردد و هر عددی را با بیشترین عدد پیدا شده مقایسه میکند:
مثال (جستجو 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; }
مرتبسازی آرایههای شیء
آرایههای JavaScript اغلب شامل شیءها هستند:
مثال
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; });
- صفحه قبلی جستجوی آرایههای JS
- صفحه بعدی تکرار کردن آرایههای JS