Ответ 1
Если вам требуется регулярное выражение, используйте search()
. В противном случае indexOf()
будет быстрее.
Являясь довольно новым для JavaScript, я не могу понять, когда использовать каждый из них.
Может кто-нибудь помочь прояснить это для меня?
Если вам требуется регулярное выражение, используйте search()
. В противном случае indexOf()
будет быстрее.
indexOf
для простых подстрок, search
для регулярных выражений.
Функция поиска (одно описание здесь) принимает регулярное выражение, которое позволяет вам сопоставлять более сложные паттерны, безразмерные строки, и т.д., в то время как indexOf (одно описание здесь) просто соответствует литеральной строке. Однако indexOf также позволяет указать начальный индекс.
Я думаю, что основное отличие состоит в том, что поиск принимает регулярные выражения.
Проверьте эту ссылку:
IndexOf() - он принимает строковые литералы или строковые объекты, но не регулярные выражения. Он также принимает нулевое целое значение, чтобы начать поиск, например:
Search() - принимает как строковые литералы, так и строковые объекты и регулярные выражения. Но он не принимает индекс для начала поиска.
Поиск находит, что он совпадает с регулярным выражением, но не имеет смещений. IndexOf использует литералы для соответствия, но имеет смещение.
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)
Без regex практической разницы между indexOf и search.
Ниже приведен пример live :
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>