TypeError: cannot use 'in' operator to search for 'x' in 'y'
Mensaje
TypeError: cannot use 'in' operator to search for 'x' in 'y' (Firefox, Chrome)
Tipo de Error
¿Qué salió mal?
El operador in
puede ser usado sólo para verificar si una propiedad se encuentra en un objeto. No puede buscar en cadenas de caracteres, o en números, u otro tipo primitivo.
Ejemplos
Buscando en cadenas de caracteres
A diferencia de otros lenguajes de programación (ej. Python), no puede buscar cadenas de texto usando el operator in
.
js
"Hello" in "Hello World";
// TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'
En su lugar, deberá usar String.prototype.indexOf()
, por ejemplo.
js
"Hello World".indexOf("Hello") !== -1;
// true
El operando no puede ser null
o undefined
Asegúrese que el objeto que está inspeccionando no sea null
o undefined
.
js
var foo = null;
"bar" in foo;
// TypeError: cannot use 'in' operator to search for 'bar' in 'foo'
El operador in
siempre espera un objeto.
js
var foo = { baz: "bar" };
"bar" in foo; // false
"PI" in Math; // true
"pi" in Math; // false
Buscando en arreglos
Tenga cuidado cuando use el operador in
para buscar en objetos Array
. El operador in
verifica el índice numérico, no el valor de dicho índice.
js
var trees = ["redwood", "bay", "cedar", "oak", "maple"];
3 in trees; // true
"oak" in trees; // false