0

jQueryを使用してFlickrAPIのいくつかの画像を処理し、結果セットをループしています。

これは機能します:

$.getJSON(apiCall, function(data) {
    //LOOP THROUGH DATA
    $.each(data.photos.photo, function(i, photo) {
        // do stuff
    });
});

しかし、オブジェクトが設定されていることを確認するためのチェックを追加したときphotos、lengthプロパティは未定義です。

$.getJSON(apiCall, function(data) {

    console.log(data.photos.length); // returns undefined

    if(data.photos.length >= 1){
        //LOOP THROUGH DATA
        $.each(data.photos.photo, function(i, photo) {
            // do stuff
        });
    } else {
        // do other stuff
    }
});

photosオブジェクトが設定されているかどうかを判断する適切な方法は何ですか?

編集:返されたjsonデータのサンプル:

{"photos":{"page":1, "pages":100172, "perpage":50, "total":"5008581", "photo":[{"id":"8077408556", "owner":"75972124@N08", "secret":"ede5a49ab5", "server":"8323", "farm":9, "title":"zara 2", "ispublic":1, "isfriend":0, "isfamily":0}. . .

はい、簡単にテストすることは可能photos.total >= 1ですが、長さのプロパティに興味があります。

4

5 に答える 5

1

試す

$.getJSON(apiCall, function(data) {

    console.log(data.photos.photo.length); // returns undefined

    if(data.photos.photo.length >= 1){
        //LOOP THROUGH DATA
        $.each(data.photos.photo, function(i, photo) {
            // do stuff
        });
    } else {
        // do other stuff
    }
});

長さを取得するには、使用する必要がありますdata.photos.photo

于 2012-10-11T16:48:13.437 に答える
0

これを試してください:

写真のプロパティの長さを取得するには、 length プロパティを使用するだけです。

data["photos"]["photo"].length;
于 2012-10-11T16:57:38.587 に答える
0

おそらくdata.photos、配列ではなくオブジェクトです。プロパティを指定しない限り、オブジェクトにはプロパティがありませんlength

オブジェクト内の要素の数をテストする方法は、Object.keys. これにより、オブジェクト内のすべてのキーを要素とする配列が作成されます。したがって、この配列の長さは、オブジェクト内のキーの数です。

if (Object.keys(data.photos).length >= 1) {

このObject.keys関数は ECMA5 で導入されたものであり、多くのブラウザーでは利用できないことに注意してください。MDN Web サイトには、それを古いブラウザーに追加するコードが含まれています。

于 2012-10-11T16:48:20.727 に答える
0

data.photos.photowhich は配列であり、 を介してアクセスする必要がある length プロパティを持っていますdata.photos.photo.length

data.photos反復する前にそのプロパティに何かがあることを単に確認したい場合はphoto、 を使用できますif (data.photos.photo)

于 2012-10-11T17:09:11.473 に答える
0

の長さではなく null をチェックしてみてくださいobject。これは長さをチェックする配列ではありません

それ以外の

if(data.photos.length >= 1){

試す

if(data.photos != null){

///

$.getJSON(apiCall, function(data) {

    //console.log(data.photos.length); // returns undefined

    if(data.photos != null){  // OR if(data.photos)
        //LOOP THROUGH DATA
        $.each(data.photos.photo, function(i, photo) {
            // do stuff
        });
    } else {
        // do other stuff
    }
});
于 2012-10-11T16:58:56.497 に答える