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