مرتب کردن عنصرهای (Element) یک آرایه (Array)، به صورت نزولی، با روش های sort و reverse ، در JavaScript
در
کلید شماره 2402 ، روش
sort
در JavaScript را معرفی کردیم که برای مرتب کردن عنصرهای (Element) یک آرایه (Array)، به صورت صعودی، به کار می رود. اما شاید بخواهیم که عنصرهای (Element) آرایه (Array)، به صورت نزولی مرتب شوند.
برای این منظور، می توانیم از ترکیب روش های
sort
و
reverse
استفاده کنیم. روش
reverse
در JavaScript ، برای معکوس کردن ترتیب عنصرهای (Element) یک آرایه (Array) به کار می رود ( کلید شماره 27877 ).
بنابراین ابتدا می توانیم با استفاده از روش
sort
، عنصرهای (Element) آرایه (Array) را به صورت صعودی مرتب کنیم و سپس با استفاده از روش
reverse
، ترتیب عنصرهای (Element) آرایه (Array) را معکوس نماییم تا ترتیب صعودی به ترتیب نزولی تبدیل شود.
اگر آرایه شامل تعدادی رشته (String) باشد، آنگاه عنصرهای آرایه بر اساس حروف الفبا (البته به صورت معکوس)، مرتب می شوند و اگر آرایه از تعدادی عدد تشکیل شده باشد، آنگاه عنصرهای آرایه بر حسب رقم اعداد مرتب می شوند.
به عنوان مثال، اگر آرایه مورد نظرمان در متغیری با نام
kelidestan
ذخیره شده باشد، آنگاه کد JavaScript زیر را می نویسیم :
روش
sort
در JavaScript ، هنگام مرتب کردن اعداد، رقم های متناظر اعداد را مقایسه می کند (نه مقدار کلی عدد)، مثلا عدد 9 را بزرگتر از عدد 23 در نظر می گیرد، زیرا رقم اول عدد 9 برابر 9 و رقم اول عدد 23 برابر 2 خواهد بود و 9 از 2 بزرگتر است.
بنابراین روش
sort
در JavaScript ، نتایج صحیحی را برای اعداد برنمی گرداند.
برای رفع این مشکل، هنگامی که آرایه شامل اعداد می باشد، می توانیم روش
sort
را به صورت زیر به کار ببریم (یک تابع مقایسه (Compare Function) تعریف می کنیم که شیوه تعیین ترتیب عنصرها توسط روش
sort
را تغییر می دهد) :
بنابراین کد نهایی (به همراه روش
reverse
) باید به صورت زیر باشد :
به مثال زیر توجه کنید :
نتیجه :
نتیجه :
در مثال زیر، روش
sort
را به گونه ای به کار می بریم که بتواند اعداد را دقیقا به صورت صحیح مرتب کند :
نتیجه :
بد نیست که مثال هایی را از شیوه غلط به کار بردن روش
sort
برای مرتب کردن ترتیب اعداد ذکر کنیم تا نتایج غلط آنها را مورد بررسی قرار دهید.
در مثال زیر، چند عدد تک رقمی و دو رقمی را به کار می بریم و نتایج، غلط خواهند بود :
نتیجه :
مشاهده می کنید که نتایج غلطی به دست آمده است.
در مثال زیر، روش
sort
را به صورت عادی به کار می بریم و با توجه به اینکه اعداد تک رقمی هستند، نتایج صحیح برگردانده می شوند (گاهی بر حسب اعداد تعریف شده در آرایه، ممکن است نتایج صحیح باشند) :
نتیجه :
مشاهده می کنید که با توجه به تک رقمی بودن اعداد، نتایج صحیح می باشند.