Étant assez nouveau dans JavaScript, je suis incapable de discerner quand utiliser chacun d'eux.
Quelqu'un peut-il m'aider à clarifier cela pour moi?
Étant assez nouveau dans JavaScript, je suis incapable de discerner quand utiliser chacun d'eux.
Quelqu'un peut-il m'aider à clarifier cela pour moi?
Réponses:
Si vous avez besoin d'une expression régulière, utilisez search(). Sinon, ça indexOf()va être plus rapide.
searchévaluera une chaîne dans une regex même si vous ne le souhaitez pas.
La fonction de recherche ( une description ici ) prend une expression régulière, qui vous permet de faire une correspondance avec des modèles plus sophistiqués, des chaînes insensibles à la casse, etc., tandis que indexOf ( une description ici ) correspond simplement à une chaîne littérale. Cependant, indexOf vous permet également de spécifier un index de début.
IndexOf () - il accepte les chaînes littérales ou les objets chaîne mais pas les expressions régulières. Il accepte également une valeur entière de base zéro pour démarrer sa recherche, par exemple:
Search () - accepte à la fois les chaînes littérales ou les objets chaîne et les expressions régulières. Mais il n'accepte pas d'index pour démarrer la recherche.
"baby/e/lephant".indexOf(m);?
indexOf () et search ()
commun aux deux
i) renvoie la première occurrence de la valeur recherchée
ii) renvoie -1 si aucune correspondance n'est trouvée
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8 spécial dans indexOf ()
i) vous pouvez donner la position de recherche de départ comme deuxième argument
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position) la valeur de recherche peut être une expression régulière
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
La recherche trouve sa correspondance avec une expression régulière, mais n'a pas de décalages. IndexOf utilise des littéraux pour correspondre, mais a un décalage.
Sans regex , il n'y a pas de différence pratique entre indexOf et search .
L'exemple ci-dessous donne une démo en direct :
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>
searchconvertit une chaîne en a RegExp, par exemple, str.search("d........e");correspondra également au caractère 39.