Будучи довольно новым для JavaScript, я не могу понять, когда использовать каждый из них.
Кто-нибудь может помочь уточнить это для меня?
Будучи довольно новым для JavaScript, я не могу понять, когда использовать каждый из них.
Кто-нибудь может помочь уточнить это для меня?
Ответы:
Если вам требуется регулярное выражение, используйте search()
. В противном случае indexOf()
будет быстрее.
search
оценит строку в регулярное выражение, даже если вы не хотите.
Функция поиска ( одно описание здесь ) принимает регулярное выражение, которое позволяет вам сравнивать с более сложными шаблонами, нечувствительными к регистру строками и т. Д., В то время как indexOf ( одно описание здесь ) просто совпадает с литеральной строкой. Однако indexOf также позволяет указывать начальный индекс.
IndexOf () - он принимает строковые литералы или строковые объекты, но не регулярные выражения. Он также принимает целочисленное значение, начинающееся с нуля, с которого начинается поиск, например:
Search () - принимает как строковые литералы или строковые объекты, так и регулярные выражения. Но он не принимает индекс, с которого начинается поиск.
"baby/e/lephant".indexOf(m);
?
indexOf () и search ()
общий в обоих
я) вернуть первое вхождение искомого значения
ii) вернуть -1, если совпадений не найдено
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
специальный в indexOf ()
я) вы можете дать начальную позицию поиска в качестве второго аргумента
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
преобразует строку в a RegExp
, поэтому, например, str.search("d........e");
также будет соответствовать символу 39.