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

تا به اینجا با آرایه‌ها در جاوا اسکریپت آشنا شده‌ایم.همچنین نحوه بازیابی هرکدام از آیتم های یک آرایه را بررسی کرده‌ایم.در ادامه سعی خواهیم کرد نحوه جستجو یک یا چند آیتم را با هم بررسی کنیم و در آخر نیز نحوه مرتب سازی آرایه‌ها را یاد خواهیم گرفت.

جستجو در یک آرایه

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

findIndex:

findIndex یک متد روی یک آرایه است و می‌توان به وسیله آن ایندکس یک آیتم را در یک آرایه پیدا کرد.به عنوان ورودی یک تابع را دریافت می‌کند که ما داخل آن تابع می‌توانیم جستجوی مورد نظر خودمان را انجام دهیم.

اگر به خط چهار دقت کنید ما مشخص کرده‌ایم که ایندکس آیتمی را به ما برگرداند که متن آن مساوی است با Note 3.البته از متد toLowerCase نیز استفاده کرده‌ایم که هنگام جستجو بزرگی و کوچکی حروف را مد نظر قرار ندهد.

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

find:

متد find نیز مانند findIndex عمل می‌کند با این تفاوت که به جای اینکه ایندکس آیتم را در آرایه به عنوان خروجی برگرداند خود آیتم را بر می‌گرداند.


خروجی کد بالا به جای اینکه یک عدد باشد یک شی است:

متد find در جاوا اسکرپیت

filter:

متد بعدی که برای جستجو در یک آرایه استفاده می‌شود متد filter است.filter  از نظر عملکردی مشابه find است با این تفاوت که به عنوان خروجی یک آرایه از آیتمهایی که با شرط ما برابر هستند را بر می‌گرداند:

کد بالا کمی نسبت به کدهای قبلی کمی پیچیده تر نوشته شده تا به کدهای یک برنامه واقعی شباهت داشته باشد.

در کد بالا یک تابع به اسم findNotes نوشته شده است که به عنوان ورودی یک آِرایه و یک متن را قبول می‌کند.سپس روی آرایه از متد فیلتر استفاده ‌می‌کند.اگر دقت کنید filter نیز مثل find و findIndex یک تابع به عنوان ورودی قبول می‌کند که ما داخل آن می‌توانیم شروط خود را برای پیدا کردن یک یا چند آیتم خاص اعمال کنیم.

در خطوط ۱۳ و ۱۴ سعی کرده‌ایم که با استفاده از متد includes مشخص کنیم که متن ورودی یا همان query آیا در title و یا body اشیای داخل آرایه وجود دارد یا خیر.اگر در یکی از آنها وجود داشته باشید نیز آن آیتم را به عنوان خروجی بر می‌گردانیم:

استفاده از filter در جاوا اسکریپت

ما عبارت to را به عنوان عبارت مورد نظرمان برای فیلتر به تابع findNotes پاس داده بودیم که نتیجه آن دو آیتم از آرایه ما بود که در بالا مشاهده می‌کنید.

مرتب سازی و یا sort یک آرایه:

برای مرتب سازی یک آرایه از متد sort استفاده می‌کنیم.متد sort را می‌توان روی آرایه های ساده مثل آرایه هایی رشته ای و عدد ،همچنین و آرایه های پیچیده تر مثل آرایه‌ای از اشیا استفاده کرد:


خروجی کد بالا به شکل زیر خواهد بود:

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

اگر نیاز داشته باشیم که از متد sort روی آرایه ای از اشیا استفاده کنیم کار به این سادگی نخواهد بود.برای درک بهتر به کد زیر دقت کنید:

در کد بالا ابتدا یک آرایه از اشیا به اسم notes را تعریف کرده‌ایم.سپس یک تابع به اسم sortNotes ایجاد کرده‌ایم که درون آن منطق مرتب سازی را پیاده کرد‌ه‌ایم.

متد sort به عنوان ورودی یک تابع را دریافت می‌کند.اگر دقت کنید تابع دریافتی  نیز دو ورودی دیگر به اسم a , b  دریافت کرده است که در واقع مشخص کننده دو آیتم از آیتم های آرایه ما هستند.به عبارتی sort آیتم ها را دوتا دوتا مقایسه می‌کند و دست آخر تمام آرایه را مرتب سازی می‌کند.داخل تابع برای مرتب سازی باید به شکل زیر عمل کنیم.

اگر a کوچکتر از b باشد در این صورت باید عدد ۱- را برگردانیم.

اگر b کوچکتر از a باشد باید عدد یک را برگردانیم.

اگر مساوی باشند عدد صفر را برمی‌گردانیم.

خروجی کد بالا نیز به شکل زیر خواهد بود:

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