Від автора: пошук по масивам завжди передбачав написання складного циклу, який перевіряв кожну клітинку на рівність переданим значенням. У сучасному JavaScript є два більш ефективних способи: перший з’явився в JS в 2015 році, другий трохи старше.
Метод includes
Почнемо з наймолодшого. Якщо просто, includes повертає true, якщо передане значення знайшлося в масиві, і false, якщо його там немає. Приміром, у нас є масив:
let stations = [ “Salyut”, “Skylab”, “Almaz”, “Mir”, “МКС”, “Tiangong” ]
Визначити, чи є в масиві конкретне значення, дуже просто. Для ясності тест проводився в консолі:
stations.includes(“Skylab”);
> true
stations.includes(“Space Station V”);
> false
Зверніть увагу, includes знаходить тільки цілий елемент, а не входження в рядок:
stations.includes(“Sky”);
> false
Пошук регистрозависимый:
stations.includes(“skylab”);
> false
Метод includes вкаже, чи є заданий елемент в масиві, але він не скаже вам, де він розташовується. Однак ви можете задати стартову точку пошуку за допомогою додаткового аргументу:
stations.includes(“Mir”, 2);
> true
stations.includes(“Mir”, 5);
> false
У методу includes досить хороша підтримка в останніх версіях браузерів: Chrome 47, Firefox 43. Microsoft Edge і Safari 9. Метод не підтримується IE, але ви можете скористатися спеціальним полілфілом polyfills.io. З-за відсутності в JS чітко вираженою типізації даних метод includes можна застосовувати і до рядків для знаходження слів, фраз і послідовностей символів.
let sentence = “The ISS orbits at a height of 400km”;
sentence.includes(“orbits”);
> true
Метод indexOf
Метод indexOf повертає позицію знайденого елемента в масиві. Візьмемо той самий масив:
let stations = [ “Salyut”, “Skylab”, “Almaz”, “Mir”, “МКС”, “Tiangong” ];
За допомогою методу indexOf ми можемо визначити позицію елемента в масиві, який дорівнює передаваному значенням:
stations.indexOf(“МКС”);
> 4
Якщо елемент не знайдений, indexOf поверне -1:
stations.indexOf(“Elysium”);
> -1
Метод відмінно підтримується у всіх сучасних браузерах, в тому числі і в IE9+. Як і в методі includes, можна додати необов’язковий аргумент зі стартовою точкою для пошуку.
Метод lastIndexOf
Метод indexOf знаходить перше збіг з початку масиву. А метод lastIndexOf починає пошук з кінця масиву.
stations.lastIndexOf(“Almaz”);
> 2
Зверніть увагу, метод lastIndexOf повертає позицію з початку масиву і поверне -1 (як indexOf), якщо збігів не знайдено. Як і в методі indexOf, в lastIndexOf можна вказати додатковий аргумент. Однак тепер цей аргумент буде вказувати точку старту пошуку з кінця масиву. Ви можете здогадатися, що підтримка у даного методу така ж, як і у методу indexOf.