12) آموزش مرتب سازی آرایه ها در جاوااسکریپت
آموزش رایگان جاوااسکریپت
در جلسات قبلی با مفهوم آرایه و متدهای آرایه آشنا شدیم و اگه به مبحث آرایه ها مسلط نیستید پیشنهاد میشه که حتما جلسه 10 و 11 از دوره مقدماتی جاوااسکریپت رو مطالعه کنید که خیلی مفیده. در این جلسه درباره مرتب سازی آرایه در مدل های مختلف و متدهاشو بررسی میکنیم.
دوره مرتبط و تکمیلی: آموزش کامل آرایه ها در جاوااسکریپت
دوره کامل آموزش Arrays در جاوااسکریپت به همراه کلی مثال کاربردی برای یادگیری عمیق مبجث آرایه ها در جاوااسکریپت
مرتب سازی آرایه در جاوااسکریپت
همون طور که میدونید آرایه ها میتونن تعداد Value زیادی در خود ذخیره کنند؛ مثلا ممکنه یه متغیر از نوع آرایه تا 50 تا مقدار را در خود ذخیره کند. و گاهی لازمه داده خاصی را از بین اون همه پیدا کنیم که کار نسبتا وقت گیریه، اما زمانی که آرایه ها بر اساس معیار خاصی مرتب باشن کار ما خیلی راحت تر میشه.
مرتب سازی آرایه بر حسب حروف الفبا
متد ()sort
متد sort آرایه رو به ترتیب حروف الفبا مرتب میکنه.
var fruit = ["Banana" , "Apple" , "Portugal"] fruit.sort(); //output: ["Apple" , "Banana" , "Portugal"]
متد ()reverse
متد reverse دقیقا برعکس متد sort عمل میکنه، یعنی از آخر به اول مرتب میکنه آرایه رو.
var fruit = ["Banana" , "Apple" , "Portugal"] fruit.reverse(); //output: ["Portugal" , "Banana" , "Apple"]
اشتباهات رایج مرتبسازی
یکی از اشتباهات رایج در استفاده از متد ()sort اینه که بدون ارائه تابع مقایسه، اعداد رو مرتب کنید. در این صورت، اعداد به جای مرتب شدن بر اساس مقدار عددی، به صورت رشتهای مقایسه و مرتب میشن که نتیجه مطلوبی نخواهد داشت.
مثال:
var numbers = [40, 100, 1, 5, 25, 10]; numbers.sort(); //output: [1, 10, 100, 25, 40, 5]
همونطور که میبینید، نتیجه به درستی اعداد رو مرتب نکرده چون مقایسه به صورت رشتهای انجام شده. برای جلوگیری از این اشتباه، همیشه باید تابع مقایسه مناسبی برای مرتبسازی عددی ارائه بدید.
برای مشاهده لینک دانلود لطفا وارد حساب کاربری خود شوید!
وارد شویدپسورد فایل : ندارد گزارش خرابی لینک
مطالب زیر را حتما مطالعه کنید
12 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
و یه مشکل دیگه
من آرایه زیر را سرت کردم و جواب منطقی دریافت نکردم
var x = [55, 12, -5, 2, -11, 0, 74, -57, 1, -3]
x.sort()
(10) [-11, -3, -5, -57, 0, 1, 12, 2, 55, 74]
علتش رو سرچ کنید به جواب میرسید و تو دوره هیولای جاوااسکریپت کامل توضیح دادم
یه مشکل اساسی که وجود داره اینه متد sort میاد بر اساس کدهای ASCII مرتب میکنه
فرض کنید یه آرایه داریم
var array = [22, 8, 61, ‘v’, 12, ‘a’, ‘%’, 0, ‘S’]
خب aray.sort();
نتیجه ش میشه (9) [‘%’, 0, 12, 22, 61, 8, ‘S’, ‘a’, ‘v’]
یعنی اولویت اول کاراکتر % هستش
سلام خسته نباشید اگر ممکن است راجب prompt و for یک توضیح کوتاه دهید خیلی ممنون
واقعا خسته نباشید.فکر نکنم هیچ سایتی به صورت رایگان بیاد و javascript رو ای جوری
مرسی.
امیدوارم که بهترین استفاده رو داشته باشید.
خسته نباشید. ببخشید sort واسه ارایه ای که داخلش اعداد چند رقمی هست هم جواب میده؟
سلام،
هیچ محدودیتی نداره برای تعداد ارقام عدد
نه راستش منظور من این بود که sort ارایه ای متشکل از اعداد تک یا چند رقمی رو میتونه مرتب کنه ؟راستش برای من مشکل داشت و عدد 332 رو قبل 4 و بعد از 2 میگذاشت
از یک کال بک فانکشن داخل متد sort استفاده کنید.
array.sort(function(a,b) {
return (+a) – (+b);
});
اگه نیاز به کمک داشتید تلگرام پیام بدید در خدمدتم.
megajs_admin@
خیلی خیلی ممنون کاملا حل شد 😉
خواهش میکنم!