Javascript jQuery长度属性
我正在使用jQuery处理FlickrAPI中的一些图像,并循环处理结果集 这项工作: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
$.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
}
});