Будучи досить новим у JavaScript, я не можу розрізнити, коли використовувати кожне з них.
Хтось може допомогти мені прояснити це?
Будучи досить новим у JavaScript, я не можу розрізнити, коли використовувати кожне з них.
Хтось може допомогти мені прояснити це?
Відповіді:
Якщо вам потрібен регулярний вираз, використовуйте search()
. Інакше indexOf()
буде швидше.
search
буде оцінено рядок у регулярний вираз, навіть якщо ви цього не хочете.
Функція пошуку ( один опис тут ) приймає регулярний вираз, який дозволяє зіставляти складніші малюнки, рядки, нечутливі до регістру тощо, тоді як indexOf ( один опис тут ) просто відповідає буквальному рядку. Однак indexOf також дозволяє вказати початковий індекс.
IndexOf () - він приймає рядкові літерали або рядкові об'єкти, але не регулярні вирази. Він також приймає ціле число на основі нуля, щоб почати його пошук, наприклад:
Пошук () - приймає як рядкові літерали, так і рядкові об'єкти та регулярні вирази. Але він не приймає індекс для запуску пошуку.
"baby/e/lephant".indexOf(m);
?
indexOf () та пошук ()
спільне в обох
i) повернути перше виникнення шуканого значення
ii) повернути -1, якщо не знайдено відповідності
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
спеціальний у indexOf ()
i) ви можете дати початкову позицію пошуку як другий аргумент
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
Значення пошуку може бути регулярним виразом
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
Без регулярного вираження практично немає різниці між indexOf та пошуком .
Наведений нижче приклад дає демо-версію :
function FromSearch() {
var str = document.getElementById("demo").innerText;
var n = str.search("difference");
document.getElementById("Location").innerHTML = n;
}
function FromindexOf() {
var str = document.getElementById("demo").innerText;
var n = str.indexOf("difference");
document.getElementById("Location").innerHTML = n;
}
<p id="demo">Without a <a href='http://www.w3schools.com/js/js_regexp.asp'>regex</a>, there is no practical difference between <a href='http://www.w3schools.com/jsref/jsref_indexof.asp'>indexOf</a> and <a href='http://www.w3schools.com/jsref/jsref_search.asp'>search</a>
</p>
<button onclick="FromSearch()">From search</button>
<button onclick="FromindexOf()">From indexOf</button>
<p>Location of difference in the above sentence is:</p>
<mark id="Location"></mark>
search
перетворює рядок у RegExp
str.search("d........e");