در جاوا اسکریپت دارای دو متد ()indexOf() , findIndex که معمولا هر دو برای جست و جو عناصر در ارایه ها یا رشته ها استفاده می شوند که اما دارای تفاوت هایی بین این دو وجود دارد.بریم یک سری مثال هایی رو ببینیم متوجه تفاوت های این دو بشویم.
1.متد indexOf:
متد ()indexOf را می توانیم هم برای جست و جو عناصر در ارایه و رشته ها استفاده کنیم که ایندکس اولین المنتی را که یافت کند برمیگرداند که مثال سینتکسش رو باهم ببینیم:
array.indexOf (serachElement , fromIndex)
string.indexOf(searchValue ,fromIndex)
- در بالا serachElement و searchValue (اجباری):مقداری که باید در ارایه یا رشته جست و جو شود.
- در بالا fromIndex (اختیاری):ایندکسی که برای شروع جست و جو استفاده می شود که اگر خالی باشد به صورت دیفالت از ایندکس ۰ شروع می شود.
مثال برای ارایه ها:
در مثال بالا استفاده کردیم از indexOf برای جست و جو "banana" در که اولی ایندکسی که یافت کرد عدد ۱ رو برگرداند و اما "kiwi"در این ارایه وجود نداشت عدد 1- را برگرداند که نشان دهد این مقدار در ارایه وجود ندارد.
مثال برای رشته ها :
در مثال بالا هم که همون طور که مشخصه برای مقدار "fox" که ایندکس 16 رو برگردانده که از ایندکس 16 رو برگرداند و "cat"که ایندکس ۱- برگرداننده که نشان می دهد این مقدار در رشته ما وجود ندارد.
2.متد findeIndex:
این متد یک متد مرتبه بالا می باشد که در (es6) فقط برای استفاده از آرایه ها معرفی شد که برای برگرداندن اولین ایندکسی که در آرایه یافت می کند استفاده می شود که مثال سینتکسی رو باهم ببینیم:
array.findeIndex(callback,thisArg)
- callback (اجباری):که خودش میتواند دارای سه آرگومانت element,index,array باشد.
- thisArg (اختیاری):که میتوانیم از آن به عنوان ارگومانت داینامیک با کلمه this در کال بک فانکشن خودمان استفاده کنیم.
مثال برای آرایه ای از اعداد:
در مثال بالا از findeIndex برای یافتن ایندکس اولین عددی که بر ۲ باقی مانده برای صفر داشته باشد که از ارگومانت thisArg هم استفاده کردیم که اولین ایندکسی که یافت کرده عدد ۱ هست و در صورتی که المنتی رو یافت نکند عدد ۱- رو برمیگرداند.
مثال برای آرایه از شی ها:
در مثال بالا هم برای جست و جو اولین شی که مقدار "age " آن برابر 30 باشد که کال بک فانکشن ما آن را بررسی کرده که در صورت درست بودن شرط آن عدد ۱ برای ایندکس ما برگرداننده است.
به طور خلاصه:
- متد indexOf قابل استفاده هم برای آرایه ها و هم رشته ها می باشد که اولین ایندکس یافت شده را برمیگرداند.
- متد fineIndex که یک متد مرتبه بالا می باشد که فقط قابل استفاده برای آرایه ها می باشد که ایندکس المنتی که کال بک فانکشن ما مشخص کرده را بر میگرداند.
فهمیدن تفاوت های بین این دو متد به ما میتواند در انتخاب متد و روش موردنظرمان بر اساس نیازمان چه برای یک جست و جو ساده یا جست و جو های با شرایط سخت تر کمک کند.
امیدوارم این مقاله بهتون کمک کرده باشد:)