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

Vea también