Check if Object Array and ignore all else
本问题已经有最佳答案,请猛点这里访问。
我有多个div返回这样的数组:
1 | [{"k":"Model","v":"box"},{"k":"Color","v":"blue"},{"k":"Size","v":"med"},{"k":"Type","v":"good"}] |
有时,非数组项会返回,我想忽略这些项。可以是空格或随机的未排序空白列表。所以我只想处理返回的数组,剩下的空白。我如何检查它是否是数组并忽略其余部分?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | jQuery('.overview').each(function () { var $overview = jQuery(this), specs = jQuery.parseJSON($overview.html()); if ( !! specs) { $overview.html(''); 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:/JSFIDDL.NET/VEGFPN/谢谢
您可以使用jquery中的
1 2 3 4 5 6 7 8 9 10 | if (jQuery.isArray(specs)) { $overview.html(''); jQuery.each(specs, function () { $overview.children('div').append('<ul class="specs"><li class="label">' + this.k + ' : ' + this.v + ' </li> </ul> '); }); } |
然而,在您的小提琴中出现的问题是一些元素(
1 2 3 4 5 6 | var $overview = jQuery(this), spec; try { specs = jQuery.parseJSON($overview.html()); } catch(e) { return; } |
魔鬼崇拜
这是常见的跨浏览器代码,用于检查数组是否无错误:
1 | if (Object.prototype.toString.call( someVar ) === '[object Array]' ) { |