تفاوت میان نسخههای «JavaScript:مرتبسازی آرایهها در جاوااسکریپت»
سطر ۵: | سطر ۵: | ||
=== مثال === | === مثال === | ||
− | < | + | <syntaxhighlight lang="javascript"> |
− | + | var fruits = ["Banana", "Orange", "Apple", "Mango"]; | |
− | + | fruits.sort(); // Sorts the elements of fruits | |
− | + | </syntaxhighlight> | |
− | |||
− | |||
− | |||
− | |||
− | + | == برعکس کردن یک آرایه == | |
+ | متد{{Code|code=reverse()|lang=javascript}}عناصر یک آرایه را برعکس میکند. | ||
شما میتوانید از این تکنیک برای مرتبسازی نزولی یک آرایه استفاده کنید. | شما میتوانید از این تکنیک برای مرتبسازی نزولی یک آرایه استفاده کنید. | ||
===مثال=== | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
var fruits = ["Banana", "Orange", "Apple", "Mango"]; | var fruits = ["Banana", "Orange", "Apple", "Mango"]; | ||
− | |||
fruits.sort(); // First sort the elements of fruits | fruits.sort(); // First sort the elements of fruits | ||
− | |||
fruits.reverse(); // Then reverse the order of the elements | fruits.reverse(); // Then reverse the order of the elements | ||
+ | </syntaxhighlight> | ||
− | == | + | == مرتبسازی عددی == |
− | + | به صورت پیشفرض، تابع{{Code|code=reverse()|lang=javascript}}مقادیری همانند '''رشتههای متنی''' را مرتب میکند. | |
− | |||
− | |||
− | |||
− | به صورت پیشفرض، تابع | ||
− | |||
− | |||
این متد برای رشتههای متنی بسیار خوب کار میکند .(کلمه "Apple" قبل از کلمه "Banana" میآید ) | این متد برای رشتههای متنی بسیار خوب کار میکند .(کلمه "Apple" قبل از کلمه "Banana" میآید ) | ||
− | |||
− | |||
اما، اگر عددها همانند رشتههای متنی مرتب شوند، "۲۵" بزرگتر از عدد "۱۰۰" خواهد بود، زیرا که "۲" از "۱" بزرگتر است. | اما، اگر عددها همانند رشتههای متنی مرتب شوند، "۲۵" بزرگتر از عدد "۱۰۰" خواهد بود، زیرا که "۲" از "۱" بزرگتر است. | ||
− | + | به همین دلیل، متد{{Code|code=sort()|lang=javascript}}در زمانی که برای مرتبسازی اعداد استفاده شود موجب بروز نتایج نادرست میشود. | |
− | |||
− | به همین دلیل، متد sort() در زمانی که برای مرتبسازی اعداد استفاده شود موجب بروز نتایج نادرست میشود. | ||
− | |||
− | |||
شما میتوانید این مشکل را با یک '''تابع مقایسه''' حل کنید: | شما میتوانید این مشکل را با یک '''تابع مقایسه''' حل کنید: | ||
===مثال=== | ===مثال=== | ||
− | var points = [ | + | <syntaxhighlight lang="javascript"> |
− | + | var points = [40, 100, 1, 5, 25, 10]; | |
points.sort(function(a, b){return a - b}); | points.sort(function(a, b){return a - b}); | ||
− | + | </syntaxhighlight>میتوانید از روش مشابهی برای مرتبسازی نزولی یک آرایه استفاده کنید: | |
− | |||
− | |||
− | میتوانید از روش مشابهی برای مرتبسازی نزولی یک آرایه استفاده کنید: | ||
===مثال=== | ===مثال=== | ||
− | var points = [ | + | <syntaxhighlight lang="javascript"> |
− | + | var points = [40, 100, 1, 5, 25, 10]; | |
points.sort(function(a, b){return b - a}); | points.sort(function(a, b){return b - a}); | ||
+ | </syntaxhighlight> | ||
− | == | + | == تابع مقایسه == |
− | |||
− | |||
− | |||
− | |||
هدف از استفاده از تابع مقایسه تعریف یک روش مرتبسازی دیگر است. | هدف از استفاده از تابع مقایسه تعریف یک روش مرتبسازی دیگر است. | ||
− | + | یک تابع مقایسه میبایست یک مقدار منفی، صفر یا مثبت با توجه به آرگومانهایش برگرداند:<syntaxhighlight lang="javascript"> | |
+ | function(a, b){return a - b} | ||
+ | </syntaxhighlight>زمانی که متد{{Code|code=sort()|lang=javascript}}دو مقدار را با یک دیگر مقایسه میکند، این تابع مقادیر را برای تابع مقایسه ارسال میکند و مقادیر را با توجه به مقدار بازگشتی تابع مقایسه (منفی، صفر، مثبت) مرتب میکند. | ||
− | + | * اگر نتیجه عددی منفی باشد، عدد a قبل از b مرتبسازی میشود. | |
+ | * اگر نتیجه عدد مثبت باشد، عدد b قبل از a مرتبسازی میشود. | ||
+ | * اگر نتیجه صفر باشد، تغییری روی روش مرتبسازی دو مقدار اعمال نمیشود. | ||
+ | '''مثال:'''<syntaxhighlight lang="javascript"> | ||
function(a, b){return a - b} | function(a, b){return a - b} | ||
− | + | </syntaxhighlight>{{اصلاح ترجمه بخش}}The compare function compares all the values in the array, two values at a time <code>(a, b)</code>. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | The compare function compares all the values in the array, two values at a time <code>(a, b)</code>. | ||
تابع مقایسه تمامی مقادیر موجود در یک آرایه را به صورت دو مقدار با هم، مقایسه میکند. | تابع مقایسه تمامی مقادیر موجود در یک آرایه را به صورت دو مقدار با هم، مقایسه میکند. | ||
− | + | زمانی که عدد ۴۰ و ۱۰۰ را مقایسه میکنیم، متد{{Code|code=sort()|lang=javascript}}تابع مقایسه را با مقادیر (۱۰۰، ۴۰) فراخوانی میکند. | |
− | + | تابع حاصل ۱۰۰–۴۰ یا{{Code|code=(a - b)|lang=javascript}}را محاسبه میکند، و ازآنجایی که نتیجه عددی منفی (۶۰-) است، تابع مقایسه عدد ۴۰ را کوچکتر از ۱۰۰ در نظر میگیرد. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | شما میتوانید از کد زیر برای درک مفهوم مرتبسازی عددی و الفبایی استفاده کنید:<syntaxhighlight lang="javascript"> | ||
<button onclick="myFunction1()">Sort Alphabetically</button> | <button onclick="myFunction1()">Sort Alphabetically</button> | ||
− | |||
<button onclick="myFunction2()">Sort Numerically</button> | <button onclick="myFunction2()">Sort Numerically</button> | ||
− | + | <p id="demo"></p> | |
<script> | <script> | ||
− | + | var points = [40, 100, 1, 5, 25, 10]; | |
− | var points = [ | ||
− | |||
document.getElementById("demo").innerHTML = points; | document.getElementById("demo").innerHTML = points; | ||
function myFunction1() { | function myFunction1() { | ||
− | + | points.sort(); | |
− | points.sort(); | + | document.getElementById("demo").innerHTML = points; |
− | |||
− | document.getElementById("demo").innerHTML = points; | ||
− | |||
} | } | ||
function myFunction2() { | function myFunction2() { | ||
− | + | points.sort(function(a, b){return a - b}); | |
− | + | document.getElementById("demo").innerHTML = points; | |
− | |||
− | document.getElementById("demo").innerHTML = points; | ||
− | |||
} | } | ||
− | |||
</script> | </script> | ||
+ | </syntaxhighlight> | ||
− | == | + | == مرتبسازی یک آرایه به صورت تصادفی {{به انگلیسی|Random}} == |
− | مرتبسازی یک آرایه به صورت تصادفی | ||
===مثال=== | ===مثال=== | ||
− | var points = [ | + | <syntaxhighlight lang="javascript"> |
− | + | var points = [40, 100, 1, 5, 25, 10]; | |
points.sort(function(a, b){return 0.5 - Math.random()}); | points.sort(function(a, b){return 0.5 - Math.random()}); | ||
+ | </syntaxhighlight> | ||
− | == | + | == پیدا کردن بزرگترین (یا کوچکترین) مقدار آرایه == |
− | پیدا کردن بزرگترین (یا کوچکترین) مقدار آرایه | ||
− | |||
− | |||
− | |||
هیچ تابع پیشفرضی برای پیدا کردن بزرگترین یا کوچکترین مقدار در یک آرایه وجود ندارد. | هیچ تابع پیشفرضی برای پیدا کردن بزرگترین یا کوچکترین مقدار در یک آرایه وجود ندارد. | ||
− | + | اما، بعد از اینکه شما یک آرایه را مرتب کردید، شما میتوانید با استفاده از اندیسها، کوچکترین و بزرگترین مقدار را تشخیص دهید. | |
− | |||
− | اما، بعد از اینکه شما یک آرایه را مرتب کردید، شما میتوانید با استفاده از | ||
− | |||
− | |||
− | مرتبسازی صعودی | + | مرتبسازی صعودی: |
===مثال=== | ===مثال=== | ||
− | var points = [ | + | <syntaxhighlight lang="javascript"> |
− | + | var points = [40, 100, 1, 5, 25, 10]; | |
points.sort(function(a, b){return a - b}); | points.sort(function(a, b){return a - b}); | ||
− | |||
// now points[0] contains the lowest value | // now points[0] contains the lowest value | ||
− | |||
// and points[points.length-1] contains the highest value | // and points[points.length-1] contains the highest value | ||
− | + | </syntaxhighlight>مرتبسازی نزولی: | |
− | |||
− | |||
− | مرتبسازی نزولی: | ||
===مثال=== | ===مثال=== | ||
− | var points = [ | + | <syntaxhighlight lang="javascript"> |
− | + | var points = [40, 100, 1, 5, 25, 10]; | |
points.sort(function(a, b){return b - a}); | points.sort(function(a, b){return b - a}); | ||
− | |||
// now points[0] contains the highest value | // now points[0] contains the highest value | ||
− | |||
// and points[points.length-1] contains the lowest value | // and points[points.length-1] contains the lowest value | ||
+ | </syntaxhighlight>مرتبسازی کل یک آرایه فقط برای پیدا کردن بزرگترین (یا کوچکترین) مقدار موجود در آرایه روشی کم بازده است. | ||
− | + | ==استفاده از تابع ()Math.max روی یک آرایه== | |
− | + | شما میتوانید از{{Code|code=Math.max.apply|lang=javascript}}برای پیدا کردن بزرگترین عدد در یک آرایه استفاده کنید: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | شما میتوانید از Math.max.apply برای پیدا کردن بزرگترین عدد در یک آرایه استفاده کنید: | ||
===مثال=== | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
function myArrayMax(arr) { | function myArrayMax(arr) { | ||
− | + | return Math.max.apply(null, arr); | |
− | |||
− | |||
} | } | ||
+ | </syntaxhighlight>دستور{{Code|code=Math.max.apply(null, [1, 2, 3])|lang=javascript}}با دستور{{Code|code=Math.max(1, 2, 3)|lang=javascript}}برابر است. | ||
− | + | == استفاده از تابع ()Math.min روی یک آرایه == | |
− | + | شما میتوانید از{{Code|code=Math.min.apply|lang=javascript}}برای پیدا کردن کمترین عدد در یک آرایه استفاده کنید: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | شما میتوانید از Math.min.apply برای پیدا کردن کمترین عدد در یک آرایه استفاده کنید: | ||
===مثال=== | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
function myArrayMin(arr) { | function myArrayMin(arr) { | ||
− | + | return Math.min.apply(null, arr); | |
− | return Math.min.apply(null, arr); | ||
− | |||
} | } | ||
+ | </syntaxhighlight>دستور{{Code|code=Math.min.apply(null, [1, 2, 3])|lang=javascript}}با دستور{{Code|code=Math.min(1, 2, 3)|lang=javascript}}برابر است. | ||
− | + | == متد Min و Max من در جاوااسکریپت == | |
− | |||
− | |||
− | |||
− | == | ||
− | |||
− | |||
− | |||
− | |||
بهترین روش برای اینکار استفاده از یک «متد شخصی» است. | بهترین روش برای اینکار استفاده از یک «متد شخصی» است. | ||
− | |||
− | |||
این تابع یک حلقه دارد که هر مقدار در آرایه را با بزرگترین مقداری که پیدا کند مقایسه میکند: | این تابع یک حلقه دارد که هر مقدار در آرایه را با بزرگترین مقداری که پیدا کند مقایسه میکند: | ||
− | ===مثال ( | + | ===مثال (پیداکردن Max)=== |
+ | <syntaxhighlight lang="javascript"> | ||
function myArrayMax(arr) { | function myArrayMax(arr) { | ||
− | + | var len = arr.length; | |
− | var len = arr.length; | + | var max = -Infinity; |
− | + | while (len--) { | |
− | var max = -Infinity; | + | if (arr[len] > max) { |
− | + | max = arr[len]; | |
− | while (len--) { | + | } |
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | + | return max; | |
} | } | ||
+ | </syntaxhighlight>این تابع یک حلقه دارد که هر مقدار در آرایه را با کوچکترین مقداری که پیدا کند مقایسه میکند: | ||
− | + | ===مثال (پیداکردن Min)=== | |
− | + | <br /><syntaxhighlight lang="javascript"> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ===مثال ( | ||
function myArrayMin(arr) { | function myArrayMin(arr) { | ||
− | + | var len = arr.length; | |
− | var len = arr.length; | + | var min = Infinity; |
− | + | while (len--) { | |
− | var min = Infinity; | + | if (arr[len] < min) { |
− | + | min = arr[len]; | |
− | while (len--) { | + | } |
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | + | return min; | |
− | |||
− | |||
− | return min; | ||
− | |||
} | } | ||
+ | </syntaxhighlight> | ||
− | == | + | == مرتبسازی آرایه اشیاء == |
− | + | آرایههای جاوااسکریپت اغلب شامل اشیاء نیز میشوند: | |
− | |||
− | |||
− | |||
− | آرایههای جاوااسکریپت اغلب شامل | ||
===مثال=== | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
var cars = [ | var cars = [ | ||
− | |||
{type:"Volvo", year:2016}, | {type:"Volvo", year:2016}, | ||
− | |||
{type:"Saab", year:2001}, | {type:"Saab", year:2001}, | ||
− | |||
{type:"BMW", year:2010} | {type:"BMW", year:2010} | ||
− | |||
]; | ]; | ||
− | + | </syntaxhighlight>حتی اگر اشیا ویژگیهای دیگری از نوع دادههای متفاوت داشته باشند، متد{{Code|code=sort()|lang=javascript}}میتواند برای مرتبسازی این نوع آرایهها نیز استفاده شود. | |
− | |||
− | |||
− | حتی اگر اشیا ویژگیهای دیگری از نوع دادههای متفاوت داشته باشند، متد sort() میتواند برای مرتبسازی این نوع آرایهها نیز استفاده شود. | ||
− | |||
− | |||
راه حل این مشکل نوشتن یک تابع مقایسه برای مقایسه مقادیر ویژگیها است: | راه حل این مشکل نوشتن یک تابع مقایسه برای مقایسه مقادیر ویژگیها است: | ||
===مثال=== | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
cars.sort(function(a, b){return a.year - b.year}); | cars.sort(function(a, b){return a.year - b.year}); | ||
− | + | </syntaxhighlight>مقایسه ویژگیهای مقادیر رشتهای با روشی کمی پیچیدهتر: | |
− | |||
− | |||
− | مقایسه ویژگیهای مقادیر رشتهای با روشی کمی پیچیدهتر: | ||
===مثال=== | ===مثال=== | ||
+ | <syntaxhighlight lang="javascript"> | ||
cars.sort(function(a, b){ | cars.sort(function(a, b){ | ||
− | + | var x = a.type.toLowerCase(); | |
− | var x = a.type.toLowerCase(); | + | var y = b.type.toLowerCase(); |
− | + | if (x < y) {return -1;} | |
− | var y = b.type.toLowerCase(); | + | if (x > y) {return 1;} |
− | + | return 0; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
}); | }); | ||
+ | </syntaxhighlight> | ||
==منابع آموزشی== | ==منابع آموزشی== |
نسخهٔ ۱۳ آبان ۱۳۹۸، ساعت ۰۸:۲۶
محتویات
- ۱ مرتب کردن یک آرایه
- ۲ برعکس کردن یک آرایه
- ۳ مرتبسازی عددی
- ۴ تابع مقایسه
- ۵ مرتبسازی یک آرایه به صورت تصادفی (به انگلیسی: Random)
- ۶ پیدا کردن بزرگترین (یا کوچکترین) مقدار آرایه
- ۷ استفاده از تابع ()Math.max روی یک آرایه
- ۸ استفاده از تابع ()Math.min روی یک آرایه
- ۹ متد Min و Max من در جاوااسکریپت
- ۱۰ مرتبسازی آرایه اشیاء
- ۱۱ منابع آموزشی
مرتب کردن یک آرایه
متدtoString()
یک آرایه را بر حسب حروف الفبا مرتب میکند:[۱]
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // Sorts the elements of fruits
برعکس کردن یک آرایه
متدreverse()
عناصر یک آرایه را برعکس میکند.
شما میتوانید از این تکنیک برای مرتبسازی نزولی یک آرایه استفاده کنید.
مثال
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // First sort the elements of fruits
fruits.reverse(); // Then reverse the order of the elements
مرتبسازی عددی
به صورت پیشفرض، تابعreverse()
مقادیری همانند رشتههای متنی را مرتب میکند.
این متد برای رشتههای متنی بسیار خوب کار میکند .(کلمه "Apple" قبل از کلمه "Banana" میآید )
اما، اگر عددها همانند رشتههای متنی مرتب شوند، "۲۵" بزرگتر از عدد "۱۰۰" خواهد بود، زیرا که "۲" از "۱" بزرگتر است.
به همین دلیل، متد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()
دو مقدار را با یک دیگر مقایسه میکند، این تابع مقادیر را برای تابع مقایسه ارسال میکند و مقادیر را با توجه به مقدار بازگشتی تابع مقایسه (منفی، صفر، مثبت) مرتب میکند.
- اگر نتیجه عددی منفی باشد، عدد a قبل از b مرتبسازی میشود.
- اگر نتیجه عدد مثبت باشد، عدد b قبل از a مرتبسازی میشود.
- اگر نتیجه صفر باشد، تغییری روی روش مرتبسازی دو مقدار اعمال نمیشود.
مثال:
function(a, b){return a - b}
این بخش از مقاله: {{{1}}} ، دقیق، کامل و صحیح ترجمه نشده است یا مشکل نگارش فارسی دارد لطفاً این ترجمه را با توجه به نسخهٔ اصلی اصلاح کنید و سپس این الگو را بردارید. |
The compare function compares all the values in the array, two values at a time (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, 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>
مرتبسازی یک آرایه به صورت تصادفی (به انگلیسی: Random)
مثال
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(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)
برابر است.
متد 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;
}
مرتبسازی آرایه اشیاء
آرایههای جاوااسکریپت اغلب شامل اشیاء نیز میشوند:
مثال
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;
});
منابع آموزشی