オブジェクトが配列であるかどうかを確認するには?
文字列のリストを受け取るか、単一の文字列を受け取るかの関数を書こうとしています。文字列の場合は、1つの項目だけを持つ配列に変換したいのです。そうすれば、エラーを恐れずにループすることができます。
では、変数が配列であるかどうかを確認するにはどうすればよいのでしょうか?
以下に様々な解決策をまとめて、jsperf testを作ってみました。
2570
3
ECMAScriptの規格では,Objectのクラスを知るためには,
Object.prototype
のtoString
メソッドを使うことになっています.あるいは、
typeof
を使って String であるかどうかをテストすることもできます。また、パフォーマンスを気にしないのであれば、新しい空の配列に
concat
を実行することもできます。また、コンストラクタを使って直接クエリを実行することもできます。
以下のコメントに掲載されている@T.J. Crowder'sブログの徹底的な処理をチェックしてください。
どちらの方法が優れているかを知るために、この[ベンチマーク][3]をチェックしてみてください。http://jsben.ch/#/QgYAV
Bharath][4]からは、質問された内容について、Es6を使って文字列を配列に変換しています。
を想定しています。
[3]: http://jsben.ch/#/QgYAV [4]: https://stackoverflow.com/users/8432239/bharath?tab=profile
私はまず、あなたの実装が
isArray
をサポートしているかどうかを確認します。また、
instanceof
演算子を使ってみることもできます。この関数に渡される値が、文字列か文字列の配列の2種類しかない場合は、シンプルに、文字列の可能性に対して
typeof
チェックを使用します。