Maison  >  Article  >  interface Web  >  Explication détaillée de la méthode indexOf dans le tableau JavaScript

Explication détaillée de la méthode indexOf dans le tableau JavaScript

黄舟
黄舟original
2017-03-03 15:14:301407parcourir

J'ai récemment rencontré un petit problème avec le code et je vais le simplifier dans un petit exemple pour vous le montrer.

Faites attention et vous serez récompensé à la fin. Les chaussures pour enfants avec une base solide peuvent passer directement à utilisation de type tableau.

En parlant d'indexOf, tout le monde le connaît. Il est particulièrement couramment utilisé pour juger si une chaîne contient des sous-chaînes (un outil utile pour les étudiants qui ne sont pas familiers avec les expressions régulières).

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 sont respectivement o et n dans la chaîne L'emplacement où il apparaît. L'indice de départ est 0. Et -1 signifie aucune correspondance.

Quelqu'un m'a demandé un jour pourquoi -1 n'était pas nul 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

La petite chose que vous voyez ici est que indexOf peut effectuer une simple conversion de type, convertir des nombres Convertir en string '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

, faut-il utiliser la méthode number sur le type indexOf ? 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 qui sont obsédés par le code comme le troisième type

Utilisation du type tableau

Tout le monde, rassurez-vous, le grand patron arrive.

Tout le monde connaît très bien la méthode des tableaux, mais ils ont négligé la méthode indexOf pour les tableaux (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

L’exemple n’est pas détaillé 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′) renvoie 1 car cette méthode renvoie la liste suivante du premier élément du tableau depuis le début jusqu'à ce que la correspondance soit atteinte, plutôt que de renvoyer l'index de tous matchs.

  • arr.indexOf(2016) output -1 Remarque : Aucune conversion de type implicite ne sera effectuée ici.

Maintenant que le piège 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 tableau en utilisant une égalité stricte (la même méthode utilisée par l'opérateur === ou triple-égal).

Effacer à un coup d'œil, des égaux stricts (===) sont utilisés ici. 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é

L'accumulation de petits points de connaissance n'est pas un sujet de discussion approfondie, donc 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. Non Si vous le savez, vous pouvez consulter String.prototype.indexOf() ici, puis jeter un œil au deuxième paramètre en conjonction avec le lien vers le tableau ci-dessus.

Ce qui précède est l'explication détaillée de la méthode indexOf dans les tableaux JavaScript. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn