Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery长度属性_Javascript_Jquery - Fatal编程技术网

Javascript jQuery长度属性

Javascript jQuery长度属性,javascript,jquery,Javascript,Jquery,我正在使用jQuery处理FlickrAPI中的一些图像,并循环处理结果集 这项工作: $.getJSON(apiCall, function(data) { //LOOP THROUGH DATA $.each(data.photos.photo, function(i, photo) { // do stuff }); }); 但是,当我添加一个检查以确保填充了photos对象时,length属性未定义 $.getJSON(apiCall, func

我正在使用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
    }
});
确定是否填充了
照片
对象的正确方法是什么

编辑:返回的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,但我对length属性很好奇。

试试看

$.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
    }
});

要获得长度,需要使用
数据.photos.photo

大概
数据。photos
是一个对象,而不是数组。除非指定属性,否则对象没有
length
属性

测试对象中元素数量的方法是使用
object.keys
。这将生成一个数组,其中对象中的所有键都作为其元素。因此,该数组的长度是对象中的键数

if (Object.keys(data.photos).length >= 1) {
请注意,
Object.keys
函数是在ECMA5中引入的,在许多浏览器中都不可用。MDN网站包括。

请尝试以下内容:

只需使用length属性即可获得photo属性的长度:

data["photos"]["photo"].length;

尝试检查
对象的null而不是长度。这不是用于检查长度的数组

而不是

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

//


您正在遍历
data.photos.photo
,它是一个数组,具有长度属性,应该通过
data.photos.photo.length
访问该属性


如果您只是想在迭代之前检查
data.photos
photo
属性中是否有内容,您可以使用
If(data.photos.photo)

显示json数据的示例。。如果不知道你生活的结构,很难说json@Sushanth--添加json示例。
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
    }
});