配列を判断するにはどうすればよいですか?知っている友人もいるはずですが、js が配列をどのように判断するのか理解できない友人もいます。以下のエディターがこの問題に関する情報を集めて整理しました。興味のある方はぜひご覧ください。配列を判断するための JS の知識を習得していただければ幸いです。
typeof 演算子
typeof はこの型の文字列を返します
var a = '123' console.log(typeof(a)) //string var b = [] console.log(typeof(b)) //object var c = {} console.log(typeof(c)) //object var d = null console.log(typeof(d)) //object
上記のように、typeof によって返される配列オブジェクトはすべてオブジェクトです。このメソッドは、それが配列であるかどうかを識別できません。
プロトタイプ コンストラクター。 chainメソッド
Instantizationには、コンストラクター属性がオブジェクトの配列を生成するメソッドを指します
var a = [] console.log(a.__proto__.constructor) //ƒ Array() { [native code] } var b = {} console.log(b.__proto__.constructor) //ƒ Object() { [native code] }
上記の通り、Array関数で配列をインスタンス化し、Object関数でオブジェクトをインスタンス化するメソッドだと感じます。 OK、ただしコンストラクター属性は上書きできます
var a = [] a.__proto__.constructor = Object console.log(a.__proto__.constructor) //ƒ Object() { [native code] }
これはオブジェクトになったかどうかを判断するための配列になっていることがわかります。そのため、このメソッドは最良の
インスタンスではありません
このメソッドは、あるコンストラクターのprototype属性が指すオブジェクトが別の検出対象オブジェクト内に存在する オブジェクトのプロトタイプチェーン上にある
var a = [] console.log(a instanceof Array) //a对象的原型链上能找到Array true console.log(a instanceof Object) //true 原型链上也能找到对象
上記は配列なのかオブジェクトなのかを判断するのは特に簡単ではありません
普遍的な方法toString
toString() メソッドは、このオブジェクトを反映する文字列を返します
var a= '123' console.log(a.toString()) //123 var b = [1,2,3] console.log(b.toSting()) //1,2,3 var c = {} console.log(c.toString)) //[object Object]
オブジェクトのみが返されることがわかります。オブジェクト タイプ
戻り値 [オブジェクト タイプ] type はオブジェクトのタイプを表します
オブジェクトを決定するには、オブジェクトの toString メソッドでそれを取得して使用します
var a =[] Object.prototype.toString.call(a) //[object Array]
このオブジェクトの toString メソッドは、それが配列であるかどうかを判断できます
しかし、ここには状況があることに注意してください
オブジェクトのプロトタイプの toString() も変更することができます
Array.isArray(XX)
js は、配列に文字列変数が含まれているかどうかを判断します
JavaScript で in_array 関数を使用して判断する方法の詳細な説明配列の使用法
配列が空かどうかを判断するための PHP の一般的なメソッド (5 つのメソッド)
以上がJS判定配列の詳しい紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。