それにもかかわらず、JavaScriptの配列はオブジェクトです。文字列(または整数以外のもの)を使用して値を設定する場合、実際にはオブジェクトのプロパティを設定します(整数キーを使用して設定する場合も実際にこれを行いますが、処理は少し異なります)。
文字列をキーとして使用した後の突然の破損の問題については、PHPは、連想配列ではなく正直な配列を使用している場合に認識されるため[]
、すべてのキーが整数である場合に配列(で囲まれている)を送信し、オブジェクトを送信することを期待します。 (で囲まれて{}
います)それ以外の場合。文字列キーの場合、PHPはオブジェクトを生成して.length
いるため、(空の配列のように0ではなく)未定義になると思います。
あなたの質問に答えるために、このデータの「長さ」を数える簡単な方法があります:
var i = 0;
for (var item in data.data.items) {
i++;
}
これは、の各プロパティを反復処理してdata.data.items
カウントします。あなた(またはあなたが含めるライブラリ)がObject
プロトタイプにプロパティを追加した場合、これは期待される結果を生み出さないことに注意してください。これはかなり珍しいことですが、を使用するときは注意する必要がありますfor..in
。
Naghが提案したメソッドを使用してこれに対処できます。このメソッドは、その特定のオブジェクトで定義されていないプロパティを無視します。
var i = 0;
for (var item in data.data.items) {
if(data.data.items.hasOwnProperty(item)) {
i++;
}
}