TypeError: cannot use 'in' operator to search for 'x' in 'y'(не удаётся использовать 'in' оператор поиска для 'x' в 'y')
Сообщения
TypeError: недопустимый операнд в "in" (edge) TypeError: правая часть 'in' должна быть объектом, есть 'x' (Firefox) TypeError: невозможно использовать оператор 'in' для поиска 'x' в 'y' (Firefox, Chrome)
Тип ошибки
Что пошло не так?
Оператор in можно использовать только для проверки наличия свойства в объекте. Вы не можете искать в строках, числах или других примитивных типах.
Примеры
Поиск в строках
В отличие от других языков программирования (например, Python), поиск в строках с помощью оператора in невозможен.
js
"Hello" in "Hello World";
// TypeError: cannot use 'in' operator to search for 'Hello' in 'Hello World'
Вместо этого вам нужно будет использоватьString.prototype.indexOf()
или примеры
js
"Hello World".indexOf("Hello") !== -1;
// true
Операнд не может быть null
или undefined
Убедитесь, что объект, который вы осматриваете, на самом деле не null
или undefined
.
js
var foo = null;
"bar" in foo;
// TypeError: не удаётся использовать оператор 'in' для поиска 'bar' в 'foo' (Chrome)
// TypeError: правая часть 'in' должна быть объектом, полученным null (Firefox)
Оператор in всегда ожидает объект.
js
var foo = { baz: "bar" };
"bar" in foo; // false
"PI" in Math; // true
"pi" in Math; // false
Поиск в Массивах
Будьте осторожны при использовании оператора для поиска Array
объекты. the in
оператор проверяет номер индекса, а не его значение.
js
var trees = ["redwood", "bay", "cedar", "oak", "maple"];
3 in trees; // true
"oak" in trees; // false