检查对象数组是否为空,并忽略所有其他内容

Ste*_*tin 2 javascript arrays each jquery

我有多个div返回这样的数组:

[{"k":"Model","v":"box"},{"k":"Color","v":"blue"},{"k":"Size","v":"med"},{"k":"Type","v":"good"}]
Run Code Online (Sandbox Code Playgroud)

有时,非数组项又回来了,我想忽略那些。
可以是空格或随机无序的空白列表。因此,我只想只处理返回的数组,其余的留空。
我如何检查它是否为数组,而忽略其余部分?

jQuery('.overview').each(function () {
   var $overview = jQuery(this),
       specs = jQuery.parseJSON($overview.html());
   if ( !! specs) {
       $overview.html('<div class="bullet_spec"></div>');
       jQuery.each(specs, function () {
           $overview.children('div').append('<ul class="specs"><li class="label">' + this.k + ' : ' + this.v + '</li></ul>');
       });
   } else { // leave blank?? not sure what to do here
   }
});
Run Code Online (Sandbox Code Playgroud)

这是我的小提琴:http : //jsfiddle.net/veGPN/
谢谢

p.s*_*w.g 5

您可以使用isArrayjQuery中的函数:

if (jQuery.isArray(specs)) {
   $overview.html('<div class="bullet_spec"></div>');
   jQuery.each(specs, function () {
       $overview.children('div').append('<ul class="specs"><li class="label">' + this.k + ' : ' + this.v + '</li></ul>');
   });
}
Run Code Online (Sandbox Code Playgroud)

但是,您摆弄的问题似乎是某些元素(x)甚至都不是Json。因此,并不是结果不是数组,而是根本无法解析结果。您可以简单地try/catch用来包装解析脚本,以优雅地处理此问题:

var $overview = jQuery(this), spec;
try {
    specs = jQuery.parseJSON($overview.html());
} catch(e) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

示威