آموزش جاوا اسکریپت

مرتب سازی آرایه در جاوا اسکریپت

آموزش جاوا اسکریپت از مبتدی تا حرفه ای

درس امروز از آموزش جاوا اسکریپت مربوط به مرتب سازی آرایه ها است. در این درس انواع روش های مرتب سازی آرایه در جاوا اسکریپت را با هم بررسی میکنیم.


مرتب سازی آرایه

متد sort()آرایه را بر اساس حروف الفبا مرتب می کند:

مثال

خودتان آزمایش کنید


معکوس کردن یک آرایه

تابع reverse() ترتیب عناصر را در آرایه معکوس می کند.

شما می توانید از این روش برای مرتب کردن آرایه بصورت نزولی استفاده کنید:

مثال

خودتان آزمایش کنید


مرتب سازی عددی

به طور پیش فرض، تابع sort() مقادیر را به عنوان رشته در نظر گرفته و بر اساس حروف الفبا (انگلیسی) مرتب می کند.

این روش برای رشته ها (“سیب” قبل از “موز”) بخوبی کار می کند.

با این حال، اگر اعداد به صورت رشته در نظر گرفته شوند، “۲۵” بزرگتر از “۱۰۰” است، زیرا “۲” بزرگتر از “۱” است.

به همین دلیل، روش sort() هنگام مرتب سازی اعداد ، نتیجه نادرستی تولید می کند.

شما می توانید این مشکل را با ارائه یک تابع مقایسه حل کنید :

مثال

خودتان آزمایش کنید

از ترفند مشابه برای مرتب کردن آرایه نزولی استفاده کنید:

مثال

خودتان آزمایش کنید



تابع مقایسه

هدف تابع مقایسه این است که یک روش مرتب سازی جایگزین را تعریف کنیم

تابع مقایسه باید مقدار منفی، صفر یا مثبت را، بسته به آرگومان ورودی، بازگرداند:

هنگامی که تابع sort()دو مقدار را مقایسه می کند، مقادیر را به تابع مقایسه می فرستد و سپس مقادیر را با توجه به مقدار بازگشتی (منفی، صفر، مثبت) مرتب می کند.

اگر نتیجه منفی باشد a قبل از b قرار می گیرد.

اگر نتیجه مثبت باشد b قبل از a قرار می گیرد.

اگر نتیجه ۰ باشد هیچ تغییری در مرتب سازی دو مقدار اعمال نمی شود.

مثال:

تابع مقایسه همه مقادیر در آرایه را مقایسه می کند، در هر زمان دو مقدار؛ (a, b).

در مقایسه مقادیر ۴۰ و ۱۰۰، متد sort()، تابع مقایسه (۱۰۰، ۴۰) را فراخوانی می کند.

تابع مقدار ۱۰۰ – ۴۰ را (a - b) محاسبه کرده و از آنجایی که نتیجه منفی است (۶۰-)، تابع مرتب سازی ۴۰ را به عنوان مقدار کمتر از ۱۰۰ مرتب می کند.

شما می توانید از این قطعه کد برای مرتب سازی عددی و الفبایی استفاده کنید:

خودتان آزمایش کنید


مرتب سازی آرایه با ترتیب تصادفی

مثال

خودتان آزمایش کنید


پیدا کردن بیشترین (یا کمترین) مقدار آرایه

هیچ تابع داخلی برای پیدا کردن مقدار حداکثر یا حداقل در یک آرایه وجود ندارد.

با این حال، پس از مرتب سازی آرایه، می توانید از ایندکس برای به دست آوردن بیشترین و کمترین مقادیر استفاده کنید.

مرتب سازی صعودی:

مثال

خودتان آزمایش کنید

مرتب سازی نزولی:

مثال

خودتان آزمایش کنید

اگر فقط می خواهید بیشترین (یا کمترین) مقدار را پیدا کنید، مرتب کردن کل آرایه یک روش بسیار ناکارآمد است .


استفاده از Math.max در آرایه

شما می توانید از تابع Math.max.applyبرای پیدا کردن بزرگترین مقدار در یک آرایه استفاده کنید:

مثال

خودتان آزمایش کنید

Math.max.apply(null, [1, 2, 3]) معادل Math.max(1, 2, 3) است.


استفاده از Math.min در آرایه

شما می توانید Math.min.applyبرای پیدا کردن کمترین مقدار در یک آرایه استفاده کنید:

مثال

خودتان آزمایش کنید

Math.min.apply(null, [1, 2, 3]) معادل Math.min(1, 2, 3) است.


متد های مینیمم / ماکسیمم جاوا اسکریپت

سریعترین راه این است که از توابع “نوشته شده توسط کاربران” استفاده کنید.

این تابع با استفاده از مقایسه هر مقدار با بالاترین مقدار یافت شده در یک آرایه، بیشترین مقدار (ماکسیمم) آرایه را پیدا می کند :

مثال

خودتان آزمایش کنید

این تابع با استفاده از مقایسه هر مقدار با پایین ترین مقدار یافت شده در یک آرایه، کمترین مقدار (مینیمم) آرایه را پیدا می کند :

مثال

خودتان آزمایش کنید


مرتب سازی آرایه ای از اشیاء

آرایه های جاوا اسکریپت اغلب دارای اشیا هستند:

مثال

حتی اگر اشیاء دارای خواصی از انواع مختلف داده ای باشند، تابع sort()می تواند برای مرتب سازی آرایه استفاده شود.

راه حل این است که یک تابع مقایسه برای مقایسه مقادیر خواص شیء بنویسید:

مثال

خودتان آزمایش کنید

مقایسه خواصی از نوع رشته کمی پیچیده تر است:

مثال

خودتان آزمایش کنید


منبع : W3Schools.com


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *