TypeError: cannot use 'in' operator to search for 'x' in 'y'

Meldung

TypeError: cannot use 'in' operator to search for 'x' in 'y' (Firefox, Chrome)

Fehlertyp

TypeError

Was ist falsch gelaufen?

Der in Operator kan nur für das Prüfen von Eigenschaften in Objekten genutzt werden. Man kann nicht in Strings, Nummern oder anderen primitiven Typen suchen.

Beispiele

Suchen in Strings

Im Vergleich zu anderen Programmiersprachen (z. B. Python) kann in Strings nicht mit dem in Operator gesucht werden.

"Hello" in "Hello World"; 
// TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'

Stattdessen kann zum Beispiel String.prototype.indexOf() eingesetzt werden.

"Hello World".indexOf("Hello") !== -1; 
// true

Der Operand kann nicht null oder undefined sein

Man muss sicherstellen, dass der Operand nicht null oder undefined ist.

var foo = null;
"bar" in foo;
// TypeError: cannot use 'in' operator to search for 'bar' in 'foo'

Der in Operator erwartet immer ein Objekt.

var foo = { baz: "bar" };
"bar" in foo; // false

"PI" in Math; // true
"pi" in Math; // false

Suchen in Arrays

Man muss forsichtig sein, wenn der in Operator in Array Objekten genutzt wird. Der in Operator prüft die Indexnummern, aber nicht die Werte des Indizes.

var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
3 in trees; // true
"oak" in trees; // false

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
 Mitwirkende an dieser Seite: schlagi123
 Zuletzt aktualisiert von: schlagi123,