جهت سورت آرایه براساس مقدار و حروف الفبا از کوچک به بزرگ ascending با تابع sort داخل آرایه امکان پذیر است.البته این حالت پیش فرض است که میتوان براساس عدد و از بالا به پایین Descending صورت بگیرد.

برای تغییر چیدمان آیتم ها بصورت برعکس از متد reverse استفاده شود.

 

چیدمان اعداد

با استفاده از تابع sort در اعداد، مقادیر شما را بصورت رشته مرتب سازی می‌کند.
برای مثال amir را قبل از javanmir قرار می‌دهد. اما در اعداد برای مثال ۲۵ را بزرگتر از ۱۰۰ قرار می‌دهد چون عدد ۲ در ۲۵ بزرگتر از ۱ در ۱۰۰ است.
برای چیدمان آنها بدرستی باید از تابع مقایسه ای استفاده کرد. در تابع زیر اعداد از کوچک به بزرگ چینش می‌شود.
برای چینش از بزرگ به کوچک از تابع زیر استفاده میشود.
این متد یک تابع مقایسه ای را دریافت می‌کند که دارای دو پارامتر است که این دو پارامتر در هر بار دو مقدار عددی آرایه شما را دریافت کرده و از هم کم می‌کند.حاصل مقدار بازگشتی یک عدد مثبت، منفی یا صفر است.
در صورتی که مقدار بازگشتی تابع برابر با دستور a-b عدد منفی شود پارامتر نخست a قبل از پارامتر دوم b قرار می گیرد.در صورتی که مثبت شود پارامتر b قبل از a قرار می گیرد.در صورتی که صفر شود هیچ تغییری رخ نمی دهد.

مثال:

در صورتی که مقدار بازگشتی تابع برابر با دستور b-a عدد منفی شود پارامتر نخست a قبل از پارامتر دوم b قرار می گیرد.در صورتی که مثبت شود پارامتر b قبل از a قرار می گیرد.در صورتی که صفر شود هیچ تغییری رخ نمی دهد.
این متد بر روی آرایه اصلی تاثیر می گذارد.

مثال:

 

چیدمان آیتم ها بصورت رندوم

در صورتی که بخواهیم آیتم های آرایه خود را بصورت رندومی ایجاد کنیم مقدار بازگشتی باید حاصل کسر ۰٫۵ از تابع Math.random()، عدد رندومی تولید شود. عدد حاصل در هر یک از آیتم های آرایه ممکن است مثبت یا منفی باشد.
مثال:

 

متد Fisher Yates Shuffle

برای ایجاد آیتم های رندومی در آرایه،استفاده از متد sort دقیق نیست. برای دقیق بودن میتوان از متد fisher Yates shuffle استفاده کرد. این متد در سال ۱۹۳۸ معرفی شد.
در این روش از حلقه for استفاده شده است و از انتهای آرایه به ابتدای آن پیمایش شده است. در هر بار پیمایش بصورت رندوم عددی بعنوان اندیس تعیین می شود که به سمت پایین رند شده و آن را به متغیری به نام j تخصیص داده ایم.

مقدار آیتم جاری در حال پیمایش را به متغیری به نام k تخصیص می دهیم.

سپس آیتم جاری را که از انتهای آرایه یک به یک به سمت ابتدای آرایه می رود، آیتم انتخاب شده مقدارش برابر با مقدار j انتخاب شده قرار می دهیم.

در اصل در حال جابجایی مقادیر هستیم. در انتها هم مقدار آیتم رندومی انتخاب شده را برابر با مقدار آیتم جاری قرار میدهیم.

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

مثال:

 

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

ابتدا باید آیتم های آرایه را با استفاده از تابع مقایسه ای یا از کوچک به بزرگ یا از بزرگ به کوچک سورت کنیم.
ما از کوچک به بزرگ سورت میکنیم.

مثال:

آرایه خروجی برابر است با:

حال اولین آیتم کمترین مقدار و آخری بیشترین مقدار است.
دستور کمترین مقدار:

دستور بزرگترین مقدار:

 

چیدمان از بزرگ به کوچک

مثال:

دستور کمترین مقدار:

دستور بزرگترین مقدار:

 

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

تابع Math.max قادر است از بین اعداد لیترال بیشترین مقدار را بازگشت دهد اما در آرایه که هر عدد در قالب یک آیتم قرار دارد با این روش غیر قابل انجام است اما با استفاده از متد apply میتوان مقادیر آرایه را به مقدار لیترال تبدیل و از بین آن بیشترین مقدار را پیدا کرد.
در متد Math.max.apply پارامتر نخست را برابر با null قرار میدهیم. درباره این متد در جلسات بعد صحبت خواهیم کرد.

مثال:

پیدا کردن کمترین مقدار

مثال:

 

پیدا کردن بیشترین مقدار و کمترین مقدار با دستور infinity

برای پیدا کردن بیشترین مقدار در آرایه ابتدا آن را با استفاده از دستور while یا for پیمایش میکنیم. سپس متغیری به نام max درست میکنیم که دارای مقدار infinity- است.
با استفاده از دستور شرطی برای اولین بار بررسی می‌کنیم که مقدار جاری بزرگتر از max یعنی infinity- است. در صورتی که شرط درست باشد مقدار متغیر max را تغییر و برابر با مقدار جاری میکنیم.
در هر بار بررسی max بزرگترین عدد است و آن را در انتها بازگشت میدهیم.

مثال:

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

مثال:

 

نحوه سورت آبجکت

آرایه ها ممکن است دارای مقادیر آبجکت باشند و بخواهیم آن ها را سورت کنیم.

آبجکت ها دارای خصوصیت هستند که باید از متد sort بهمراه تابع مقایسه مقادیر آن استفاده کنیم.در صورتی که مقدار خصوصیت آبجکت عدد است از تابع زیر استفاده کنید.

مثال:

در صورتی که خصوصیت آبجکت شما رشته است از تابع و دستور زیر جهت مقایسه مقادیر آن می توانید استفاده کنید.در صورتی مقدار اول از مقدار دوم خصوصیت کوچکتر باشد مقدار ۱- در صورتی که بزرگ باشد عدد ۱ و در صورتی که برابر باشد مقدار ۰ بازگشت داده می شود

دیدگاه خود را بیان کنید

این ایمیل برای عموم منتشر نمی شود