✍️ متد sort اگر تابع مقایسه نداشته باشه، عضوها را بر اساس نمایش رشتهای مرتب میکنه. به همین دلیل ممکنه ۱۰۰ قبل از ۲۰ قرار بگیره؛ اولین کاراکتر «1» از «2» کوچکتر است. برای ترتیب عددی باید به sort بگیم اختلاف دو عدد چه علامتی دارد.
تابع مقایسه (a, b) => a - b ترتیب صعودی میسازه. نتیجه منفی یعنی a جلوتر بیاد، نتیجه مثبت یعنی b جلوتر بیاد و صفر یعنی از نظر این مقایسه برابرند. لازم نیست حتماً فقط ۱ یا منفی ۱ برگردونی؛ علامت نتیجه مهمه. برای ترتیب نزولی، اختلاف را برعکس مینویسیم.
نکته دوم اینه که sort خود آرایه را تغییر میده. در تمرین، با slice() یک آرایه تازه داریم و فقط باید مقایسه را درست کنی. خطای رایج اینه که برای درست شدن یک نمونه، ورودیها را رشته یا عدد تکرقمی فرض کنیم. عدد منفی، عدد چندرقمی و عضو تکراری هم باید با همان قاعده عددی مرتب شوند.
فعالیت شما
sortedScores(scores) را اصلاح کن. scores آرایه اعداد متناهی است. آرایه تازه با ترتیب عددی صعودی برگردان و ورودی را تغییر نده؛ [30,4,100] => [4,30,100]، خالی => [] و عددهای تکراری حفظ شوند. تابع کمکی آماده checkSortedScoresUnchanged فقط تغییر نکردن ورودی و، هرجا لازم است، تازه بودن خروجی را بررسی میکند؛ آن را تغییر نده.