我有一个多个div返回一个这样的数组:
[{"k":"Model","v":"box"},{"k":"Color","v":"blue"},{"k":"Size","v":"med"},{"k":"Type","v":"good"}]
有时,非数组项会回来,我想忽略它们 可以是空格或随机未排序的空白列表。 所以我只想处理回来的数组,剩下的就是空白 我怎么能检查它是否是数组并忽略其余部分?
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
}
});
这是我的小提琴:http://jsfiddle.net/veGPN/
感谢
答案 0 :(得分:4)
您可以使用jQuery中的isArray
函数:
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>');
});
}
但是,你的小提琴中的问题似乎是某些元素(x
)甚至不是Json。所以不是结果不是数组,而是根本无法解析结果。您只需使用try/catch
包装解析脚本即可正常处理此问题:
var $overview = jQuery(this), spec;
try {
specs = jQuery.parseJSON($overview.html());
} catch(e) {
return;
}
答案 1 :(得分:0)
这是检查数组无错误的常见和交叉浏览器代码:
if (Object.prototype.toString.call( someVar ) === '[object Array]' ) {