このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
TypeError: cannot use 'in' operator to search for 'x' in 'y'
JavaScript の例外 "right-hand side of 'in' should be an object" は、in 演算子が文字列、数値、その他のプリミティブ型の中を検索するために使用された場合に発生します。これは、あるプロパティがオブジェクト内にあることをチェックする用途でしか使用することができません。
In this article
エラーメッセージ
js
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)エラーの種類
TypeErrorエラーの原因
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: cannot use 'in' operator to search for 'bar' in 'foo' (Chrome)// TypeError: right-hand side of 'in' should be an object, got null (Firefox)in 演算子は常にオブジェクトを期待します。
js
var foo = { baz: "bar" };"bar" in foo; // false"PI" in Math; // true"pi" in Math; // false配列の中の検索
in 演算子を使用してArray オブジェクトの中を検索するときは注意してください。in 演算子は添字の数値をチェックするものであり、その位置の値をチェックするのではありません。
js
var trees = ["redwood", "bay", "cedar", "oak", "maple"];3 in trees; // true"oak" in trees; // false