توضیح:
مقادیر آرایه خود را میتوان براساس حروف یا اعداد و از کوچک به بزرگ ascending و بزرگ به کوچک Descending صورت بگیرد.
البته مقدار پیش فرض برابر با حروف الفبا و از کوک به بزرگ است.
در هنگام سورت کردن اعداد از کوچک به بزرگ براساس تابع پیش فرض ممکن است خطایی رخ دهد برای مثال این تابع عدد ۲۵ را از عدد ۱۰۰ بزرگتر میداند. چون به رقم نخست جفت عدد توجه میکند و عدد ۲ از ۱ بزرگتر است.
برای رفع مشکل این قضیه بعنوان پارامتر یک تابع با عنوان تابع مقایسه ای یا compare function قرار میدهیم.
نحوه نوشتن:
1 |
array.sort(compareFunction); |
پارامترها:
- مقدار compareFunction: یک تابع که نحوه چیدمان یک آرایه عددی را مشخص میکند. مقدار return تابع باید یک عدد مثبت،صفر یا منفی باشد. این تابع دارای دو آرگومان برای مثال a,b است که درون تابع بصورت a-b با هم مقایسه میشوند و نتیجه آن بازگشت داده میشود. در صورتی که حاصل عدد منفی باشد چیدمان از کوچک به بزرگ است. در صورتی که عدد مثبت شود چیدمان از بزرگ به کوچک است و در صورتی که حاصل ۰ شود تغییری رخ نمیدهد.حال اگر پارامتر بصورت b-a مقایسه شود و حاصل عدد مثبت باشد از بزرگ به کوچک چیدمان می شود. (اختیاری)
مقدار بازگشت:
آرایه چینش شده
وضعیت پشتیبانی از مرورگرها:
مرورگر Chrome | مرورگر Firefox | مرورگر Edge | مرورگر Safari | مرورگر Opera |
---|---|---|---|---|
همگی | همگی | همگی | همگی | همگی |
مثال:
1 2 3 |
var arr = ["javanmir", "tehran", "amir"]; arr.sort(); //amir, javanmir, tehran |
1 2 3 |
const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a-b}); //1,5,10,25,40,100 |
1 2 3 |
const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b-a}); //100,40,25,10,5,1 |
1 2 3 4 |
const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a-b}); points[0]; //1 |
1 2 3 4 |
const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b-a}); points[0]; //100 |
1 2 3 4 |
const points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a-b}); points[points.length-1]; //100 |
1 2 3 4 |
var arr = ["javanmir", "tehran", "amir"]; arr.sort(); arr.reverse(); // tehran, javanmir, amir |