変数が配列かどうか判定する方法
JavaScriptまたはjQueryで、変数が配列かどうかを判定する方法についてです。
JavaScript単体で正しく判定するには、文字列に変換してから判定しないといけないらしく、ちょっと意外でした。
目次
- JavaScript
- jQuery
- 参考リンク
JavaScript
Array.isArray()を使って判定(IE8で使えない)
alert(Array.isArray([])); // true
alert(Array.isArray({})); // false
instanceofを使って判定
alert([] instanceof Array); // true
alert({} instanceof Array); // false
instanceofを使った判定方法でも大抵の場合は問題ないようですが、フレームを使った場合に親ページの変数を判定しようとするとうまくいかないとかなんとか。最近はフレームを使った開発はあまりないと思いますが、詳しくは参考リンクで確認してください。
正しく判定するためには以下のように文字列に変換して判定するようです。
alert(isArray([])); // true
alert(isArray({})); // false
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
jQuery
$.isArray()で判定
alert($.isArray([])); // true
alert($.isArray({})); // false