ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でオブジェクトが配列であるかどうかを判断するいくつかの方法 (概要)
この記事では、オブジェクトが配列であるかどうかを判断するためのいくつかの JavaScript メソッドを紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
JS での配列の使用は一般的な操作です。開発中に、配列である必要がある変数を取得することがありますが、それが配列であるかどうかはわかりません。何をすべきでしょうか? 配列であるかどうかを判断するにはどうすればよいですか?
JS の非プリミティブ データ型はオブジェクトです (関数には独自の型がありますが、それらもオブジェクトです)。したがって、typeof
演算子を使用して判断するだけでは不十分です。
let result = { subject: 'Science', marks: 97 }; let numbers = [1, 2, 3, 4, 5]; console.log(typeof result); // Object console.log(typeof numbers); // Object
この記事では、指定された変数または値が JS の配列であるかどうかを確認する方法を見てみましょう。 [関連チュートリアルの推奨事項: JavaScript ビデオ チュートリアル ]
名前が示すように、このメソッドは次のようになります。指定されたパラメータを識別するために使用されます。配列であっても、ブール値 (true/false
) と結果を返します。
たとえば、次の変数を使用すると、Array.isArray()
メソッドは、それが配列であるかどうかを正しく判断できます。
let result = { subject: "Science", marks: 97 }; // Object let numbers = [1, 2, 3, 4, 5]; // Array let name = "Mark"; // String let names = new Array("Jill", "Jane", "Jacqueline"); console.log(Array.isArray(result)); // false console.log(Array.isArray(numbers)); // true console.log(Array.isArray(name)); // false console.log(Array.isArray(names)); // true
すべてのオブジェクトには、constructor
プロパティがあります (例外として、object.create(null)
を使用して作成されたオブジェクトは、発生する可能性は低いです)。 constructor
属性を JS コンストラクターと直接比較できます。したがって、それを配列コンストラクターと比較すると、それが配列であるかどうかがわかります。
注: コンストラクターは、オブジェクトを初期化するために使用される関数です。 new
キーワードを使用してオブジェクトが作成された場合は、コンストラクターが使用されます。たとえば、let myArray = new Array(1,2)
では、使用されるコンストラクターは Array()
です。
constructor
属性を使用して、変数が配列であるかどうかを判断できます。
let result = { subject: "Science", marks: 97 }; let numbers = [1, 2, 3, 4, 5]; let name = "Mark"; let names = new Array("小智", "小力", "小吴"); console.log(result.constructor === Array); // false console.log(numbers.constructor === Array); // true console.log(name.constructor === Array); // false console.log(names.constructor === Array); // true
instanceof
演算子は、コンストラクターがオブジェクトのプロトタイプ チェーン内にあるかどうかを確認します。
typeof
演算子と同様に、ブール値を返します。変数が配列であるかどうかを判断するには、次のように instanceof
を使用できます。
let result = { subject: "Science", marks: 97 }; let numbers = [1, 2, 3, 4, 5]; let name = "Mark"; let names = new Array("小智", "小力", "小吴"); console.log(result instanceof Array); // false console.log(numbers instanceof Array); // true console.log(name instanceof Array); // false console.log(names instanceof Array); // true
Object.prototype という名前のメイン プロトタイプ オブジェクトからプロパティを継承します。
toString() メソッドは
Object.prototype に存在します。これが、各オブジェクトに独自の
toString() メソッドがある理由です。
toString()
メソッドは、オブジェクトのタイプを表示します。 オブジェクトの
メソッドは関数を実行しますが、this
値を引数として渡されたオブジェクトに変更します。たとえば、あるオブジェクトが別のオブジェクトを使用できるようにします。オブジェクトのメソッド。 したがって、
を使用して型を出力し、次に call()
を使用して別のオブジェクトを処理し、文字列を比較できます。値を使用して配列かどうかを判断します。 <pre class="brush:js;toolbar:false;">let result = { subject: "Science", marks: 97 };
let numbers = [1, 2, 3, 4, 5];
let name = "Mark";
let names = new Array("小智", "小力", "小吴");
console.log(Object.prototype.toString.call(result)); // [object Object]
console.log(Object.prototype.toString.call(numbers)); // [object Array]
console.log(Object.prototype.toString.call(name)); // [object String]
console.log(Object.prototype.toString.call(names)); // [object Array]
console.log(Object.prototype.toString.call(result) === "[object Array]"); // false
console.log(Object.prototype.toString.call(numbers) === "[object Array]"); // true
console.log(Object.prototype.toString.call(name) === "[object Array]"); // false
console.log(Object.prototype.toString.call(names) === "[object Array]"); // true</pre>
この方法を使用する可能性は低いですが、JS オブジェクトについて詳しく学ぶことは決して悪いことではありません。
メソッドであり、将来ほとんどの友人がこれを使用する可能性があります。 ただし、
演算子やその他のオブジェクト プロパティを利用して、それが配列であるかどうかを判断することもできます。
プログラミング ビデオ著者: ゲスト寄稿者
翻訳アドレス:https://segmentfault.com/a/1190000038661505
プログラミング関連の知識については、
以上がJavaScript でオブジェクトが配列であるかどうかを判断するいくつかの方法 (概要)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。