Avant-propos
Je pense que tout le monde connaît indexOf. Il est particulièrement couramment utilisé pour juger si une chaîne contient des sous-chaînes. C'est un outil utile pour les étudiants qui ne sont pas familiers avec les expressions régulières. Cet article utilise un exemple pour parler de la méthode indexOf basée sur un problème que j'ai rencontré récemment. Cet article est une accumulation de petits points de connaissances et n'est pas un sujet de discussion approfondie. Par conséquent, le deuxième paramètre de indexOf() n'est pas expliqué ici. Je pense que tout le monde connaît le rôle du deuxième paramètre.
Utilisation du type String
Revoyez l'utilisation de la chaîne bien connue, par exemple
let str = 'orange'; str.indexOf('o'); //0 str.indexOf('n'); //3 str.indexOf('c'); //-1
ici 0 et 3 respectivement sont la position où o et n apparaissent dans la chaîne. L'indice de départ est 0. Et -1 signifie aucune correspondance.
Quelqu'un m'a demandé un jour pourquoi c'était -1 au lieu de null ou indéfini. Demandez à la personne qui a établi les règles ! Un air d'impuissance.
Tout le monde ne voit rien d'intéressant ici, ne vous inquiétez pas, voici un autre exemple
let numStr = '2016'; numStr.indexOf('2'); //0 numStr.indexOf(2); //0
Vous voyez un petit point ici, c'est que indexOf peut faire des types simples Convert , convertissez le nombre en chaîne « 2 », puis exécutez.
Utilisation du type Number
Vous vous demandez peut-être si le type number a une méthode indexOf car il effectuera une conversion implicite ! Laissez-moi vous dire clairement que non, dans l'exemple ci-dessus
let num = 2016; num.indexOf(2); //Uncaught TypeError: num.indexOf is not a function
, devez-vous utiliser la méthode indexOf sur le type numérique ? Convertissez-le ensuite en chaîne, puis écrivez
//二逼青年的写法 num = '2016'; num.indexOf(2); //0 //普通青年的写法 num.toString().indexOf(2); //0 //文艺青年的写法 ('' + num).indexOf(2); //0
dans l'exemple ci-dessus. La première façon d'écrire est simple et directe, et elle n'est pas impossible pour les nombres plus courts connus. Mais que devons-nous faire lorsque la variable num change pour différentes données ? ❌
La deuxième façon d'écrire est la plus couramment utilisée, mais elle est un peu plus longue que la troisième façon d'écrire. Haha, en fait, tout est possible. Les gens obsédés par le code préfèrent le troisième type ✅
Utiliser le type Array
Tout le monde, rassurez-vous, le grand patron arrive.
Tout le monde connaît les méthodes de tableau, mais ils ignorent que les tableaux ont la méthode indexOf (mon sentiment personnel).
Parlez simplement sans pratiquer. Quels problèmes avez-vous rencontrés ? À quoi devez-vous faire attention ?
let arr = ['orange', '2016', '2016']; arr.indexOf('orange'); //0 arr.indexOf('o'); //-1 arr.indexOf('2016'); //1 arr.indexOf(2016); //-1
Les exemples ne sont pas détaillés ici. Quatre cas d’usage suffisent à illustrer la problématique.
arr.indexOf('orange') génère 0 car 'orange' est le 0ème élément du tableau, et l'index est mis en correspondance et renvoyé.
arr.indexOf('o') renvoie -1 car cette méthode n'effectue pas à nouveau la correspondance indexOf élément par élément.
arr.indexOf('2016') génère 1 car cette méthode renvoie le tableau ci-dessous du premier élément du tableau depuis le début jusqu'à ce que la correspondance soit atteinte, plutôt que de renvoyer tous les indices correspondants.
arr.indexOf(2016) output -1 Remarque : Aucune conversion de type implicite ne sera effectuée ici.
Maintenant que le gouffre a été découvert, autant aller au fond des choses. Rendez-vous sur le site officiel de MDN pour le savoir. Les amis intéressés par ce sujet peuvent accéder directement à Array.prototype.indexOf()
Pour ceux qui veulent juste en savoir plus, voici la description officielle.
indexOf() compare searchElement aux éléments du Array en utilisant une égalité stricte (la même méthode utilisée par l'opérateur === ou triple-égal).
C'est clair à un coup d'œil, ce qui est utilisé ici est strictement égal à (===). Veuillez faire plus attention lorsque vous portez des jugements similaires. Ne commettez pas l’erreur de penser que les nombres seront convertis en chaînes et que les chaînes ne seront pas converties en nombres.
Résumé
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra être utile aux études ou au travail de chacun. Si vous avez des questions, vous pouvez partir. un message à communiquer.
Pour plus d'articles sur la méthode indexOf dans les tableaux JS, veuillez faire attention au site Web PHP chinois !