Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
TypeError: invalid 'in' operand "x"
Message
TypeError: Invalid operand to 'in' (Edge)TypeError: right-hand side of 'in' should be an object, got 'x' (Firefox)TypeError: cannot use 'in' operator to search for 'x' in 'y' (Firefox, Chrome)
Dans cet article
Type d'erreur
TypeErrorQuel est le problème ?
L'opérateurin peut uniquement être utilisé pour vérifier qu'une propriété appartient à un objet. Il ne peut pas être utilisé pour rechercher des caractères dans des chaînes de caractères, des nombres ou dans d'autres types de données en dehors des objets.
Exemples
>Rechercher un texte dans une chaîne de caractères
À la différence de certains langages de programmation (Python par exemple), JavaScript ne permet pas de chercher des textes dans une chaîne de caractères grâce à l'opérateurin.
"Coucou" in "Coucou monde";// TypeError: cannot use 'in' operator to search for 'Coucou' in 'Coucou monde'On utilisera plutôt la méthodeString.prototype.indexOf() :
"Coucou monde".indexOf("Coucou") !== -1;// truenull ouundefined ne fonctionnent pas
Avant d'utiliserin, il faut s'assurer que la valeur qu'on inspecte n'est pasnull ouundefined.
var toto = null;"truc" in toto;// TypeError: cannot use 'in' operator to search for 'truc' in 'toto" (Chrome)// TypeError: right-hand side of 'in' should be an object, got null (Firefox)L'opérateurin doit être utilisé avec un objet.
var toto = { machin: "bidule" };"truc" in toto; // false"PI" in Math; // true"pi" in Math; // falseRechercher dans un tableau
Attention lorsqu'on utilise l'opérateurin quand on recherche une valeur dans un objetArray. L'opérateurin vérifie la présence de l'index mais pas la valeur présente à cet index.
var arbres = ["cèdre", "bouleau", "pin", "sapin", "érable"];3 in arbres; // true"pin" in arbres; // false