0

要素の数を数えることについては、すでに同様の質問がたくさんあるようですが、私の問題でそれらを実装できていません。

jquery ajaxの後、次のようなJSONデータが返されます

Object {0: Object, 1: Object , xxxx:"asdf" ,yyyy:"asdf", zzzz:"asdf"}

この { } 中かっこの間のオブジェクトの数を取得したい(これらの xxx,yyy 要素は数えない)

.length私はどれがうまくいかないか試しました

このJavaScript オブジェクトの Lengthも使用してみましたが、各オブジェクトの要素数を返します。オブジェクトの数が欲しいだけです

ありがとうございました

4

4 に答える 4

2

これを試して:

var json = { 0: {}, 1: {}, xxxx: "asdf", yyyy: "asdf", zzzz: "asdf" };

function typeOf( obj ) {
  return ({}).toString.call( obj )
    .match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}

var total = 0;
for ( var o in json ) {
  if ( typeOf( json[o] ) == 'object' ) {
    total++;
  }
}

console.log( total ); //=> 2

JavaScript ではすべてがオブジェクトです。オペレーターは誤解を招くため、このtypeof場合は機能しません。typeOfこのブログ投稿から抽出した上記の関数を使用できます: JavaScript の typeof 演算子を修正する(読む価値があります)。他の方法もありますが、これが最も簡単なようです。

于 2012-12-15T06:24:14.300 に答える
1

オブジェクトが数値プロパティ名を持つオブジェクトであり、数値プロパティが順番にカウントアップするのが単なる偶然ではない場合は、次のようにすることができます。

var obj = { /* your object here */ }
for (var i=0; i in obj; i++) {
   // use obj[i] for something
}
// i is now equal to the number of numeric properties

これが機能iするのは、 がプロパティを使い果たすのに十分な高さになるとすぐに、inオペレーターが を返すためfalseです。.hasOwnProperty()必要に応じて、代わりに自由に使用してください。

明らかに、これはさまざまなプロパティの型をまったくテストしない特殊なソリューションです。(実際にタイプをテストするには、elclanrs のソリューションを参照してください。いずれにしても、彼がリンクしたページを読んでください。)

于 2012-12-15T06:31:44.107 に答える
0

この質問Javascript オブジェクトの長さ (つまり、連想配列)のコードからカスタマイズされたバージョンを使用し、演算子を使用して要素の型をチェックし、 (または)typeofのものだけを数えることができます。objectarray

Object.sizeObj = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (typeof key[obj] === 'object' && obj.hasOwnProperty(key)) size++;
    }
    return size;
};

// Get the count of those elements which are an object
var objectsCount = Object.sizeObj(myArray);
于 2012-12-15T06:31:57.273 に答える
0

json 全体が という変数にあるとしますjson

var total_objects = 0;
$.each(json, function () {
   if (typeof this == 'object') {
      total_objects++;
   }
});

しかし、なぜあなたがこれを知る必要があるのか​​、私は興味があります。

于 2012-12-15T06:10:09.090 に答える