[英]Check if json array is empty
我有一个小脚本,可以为网上商店菜单获取一些JSON内容。 有时类别中没有产品,因此当数组为空时,必须显示“未找到产品”行。 我尝试使用jQuery.isEmptyObject()进行此操作,但是现在仅在其中包含产品的类别中显示文本。 菜单本身除了上面的东西外完美地工作...
所以我的问题是:如何检查json.products
或product
是否为空? 如果是这样,您如何将其与脚本的末尾合并?
可能对您来说很容易。...我不再看到它了;)
我有的:
function widget(catId, catHref){
var url = catHref + 'page1.ajax?limit=4';
$.getJSON(url, function (json){
var productsHtml = [];
$.each(json.products, function(index, product){
var productHtml = '' +
..... blablabla .....
productsHtml.push(productHtml);
});
productsHtml = productsHtml.join('');
if (jQuery.isEmptyObject(json[productsHtml])) {
$('#widget-products'+catId+' ul').html('No products');
} else{
$('#widget-products'+catId+' ul').html(productsHtml);
}
});
}
您正在使用此行将数组转换为字符串:
productsHtml = productsHtml.join('');
因此,只需执行以下操作:
if ('' == productsHtml) {
// blah blah
根据评论进行编辑,并对问题进行编辑:
要检查json.products
是否为空,只需检查json.products.length
:
if (!json.products.length) { // implies json.products is empty
您没有指定product
是什么,也永远不会在上面的代码中使用它。 如果是数组,请检查product.length
。 对于字符串,请与''
进行比较。 如果是对象,则使用jQuery.isEmptyObject(product)
。
根据评论编辑2:
要检查JSON对象是否具有给定的属性,请使用.hasOwnProperty()
,如下所示:
if(!json.hasOwnProperty('collection') || !json.collection.hasOwnProperty('products')) {
如果没有collection
属性,则会发生短路,并且您知道您没有collection.products
。 如果它具有collection
属性,它将继续运行并检查collection.products
属性。
只需像这样检查数组的长度即可。
if(productsHtml.length>0)
{
//do your stuff here...
}
对于新问题,我已经更新了您的代码并添加了一些注释,以使您了解:-
$.getJSON(url, function(json) {
var productsHtml = [];
//here i am checking json or json.products is not undefined
if (json && json.products) {
$.each(json.products, function(index, product) {
//checking if product is not undefined
if (product) {
//do your stuff
var productHtml = '' +
.....blablabla.....
productsHtml.push(productHtml);
}
});
productsHtml = productsHtml.join('');
if (jQuery.isEmptyObject(json[productsHtml])) {
$('#widget-products' + catId + ' ul').html('No products');
} else {
$('#widget-products' + catId + ' ul').html(productsHtml);
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.