• ベストアンサー

jQueryで、listの要素数を取得したい

添付ファイルのようなlistオブジェクトがあります。 コード上の$.each(list, function(~ となっているところで、 listとすると、全体が、 list[1]とすると、key1部分が取得できるのですが、 この時、このlistオブジェクト親要素数(3)を取得するには、 どうすればよいのでしょうか? list.sizeとか、list.lengthとかやっても、うまくいきませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

>ちなみに、ここでやってること (1)listがObjectでない時は-1(nullとかが渡された場合に判定できるように)。 (2).lengthの型が数値の時は、配列とみなして、.lengthを返す。 (3)ここまで来た時は、たぶん連想配列(キーと値のペア)だろうから、キーを数えて返す。 >単純に、list.lengthだけでダメなのは、対象オブジェクトが、多次元みたいな構成になってたからでしょうか? 多次元というか、単にlistがObject型だからでは。なので、 > 内容的には、jQueryというよりは、javascriptの話になるのでしょうか? と思います。 くわしくは、ここらへんをご覧ください: http://www.ecmascript.org/docs.php

re999
質問者

お礼

回答ありがとうございました。 大変参考になりました!

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

適当な組み込み機能がなさそうなので、自力で数えてみては。 一例: function count_properties( list ){ if ( typeof list != 'object' ){ return -1; } if ( typeof list.length == 'number' ){ return list.length; } var n = 0; for ( var k in list ){ n++; } return n; }

re999
質問者

補足

回答ありがとうございました。 おかげで望む結果を得ることができました。 ちなみに、ここでやってることと言うのは、下記のような意味で合ってますでしょうか? ・listの型がオブジェクトの場合はスキップ。 ・listの型が数字だったら、数を数える。 ・それを、listの要素数だけ、繰り返す。 単純に、list.lengthだけでダメなのは、対象オブジェクトが、多次元みたいな構成になってたからでしょうか? 内容的には、jQueryというよりは、javascriptの話になるのでしょうか? 何か参考になるようなサイト等、もしご存知でしたら、教えていただければ幸いです。

関連するQ&A