Jako że jestem całkiem nowy w JavaScript, nie jestem w stanie określić, kiedy użyć każdego z nich.
Czy ktoś może mi to wyjaśnić?
Jako że jestem całkiem nowy w JavaScript, nie jestem w stanie określić, kiedy użyć każdego z nich.
Czy ktoś może mi to wyjaśnić?
Odpowiedzi:
Jeśli potrzebujesz wyrażenia regularnego, użyj search(). W przeciwnym razie indexOf()będzie szybciej.
searchoceni ciąg znaków do wyrażenia regularnego, nawet jeśli nie chcesz.
Funkcja wyszukiwania ( tutaj jeden opis ) przyjmuje wyrażenie regularne, które pozwala dopasowywać bardziej wyrafinowane wzorce, ciągi znaków bez rozróżniania wielkości liter itp., Podczas gdy indexOf ( jeden opis tutaj ) po prostu dopasowuje ciąg literału. Jednak indexOf pozwala również określić indeks początkowy.
IndexOf () - przyjmuje literały łańcuchowe lub obiekty łańcuchowe, ale nie wyrażenia regularne. Akceptuje również zerową wartość całkowitą, aby rozpocząć wyszukiwanie, np .:
Search () - akceptuje zarówno literały łańcuchowe, jak i obiekty łańcuchowe i wyrażenia regularne. Ale nie akceptuje indeksu, od którego można rozpocząć wyszukiwanie.
"baby/e/lephant".indexOf(m);?
indexOf () i search ()
powszechne w obu
i) zwraca pierwsze wystąpienie szukanej wartości
ii) zwraca -1, jeśli nie znaleziono dopasowania
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8 special in indexOf ()
i) możesz podać początkową pozycję wyszukiwania jako drugi argument
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position) szukana wartość może być wyrażeniem regularnym
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
Bez wyrażenia regularnego nie ma praktycznej różnicy między indexOf a wyszukiwaniem .
Poniższy przykład przedstawia demo na żywo :
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>
searchkonwertuje ciąg znaków na RegExp, więc na przykład str.search("d........e");będzie również pasował do znaku 39.