我正在尝试编写一个接受字符串列表或单个字符串的函数。如果它是一个字符串,那么我想将其转换为仅包含一项的数组,因此我可以遍历它而不必担心错误。
那么,如何检查变量是否为数组?
我整理了以下各种解决方案,并创建了jsperf测试。它们都非常快,因此只需使用Array.isArray- 现在得到了很好的支持,并且可以跨框架使用。
Array.isArray
在现代浏览器中,您可以
Array.isArray(obj)
受Chrome5,Firefox 4.0,IE 9,Opera 10.5和Safari 5支持)
为了向后兼容,您可以添加以下内容
# only implement if no native implementation is available if (typeof Array.isArray === 'undefined') { Array.isArray = function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; } };
如果使用jQuery,则可以使用jQuery.isArray(obj)或$.isArray(obj)。如果使用下划线,则可以使用_.isArray(obj)
jQuery.isArray(obj)
$.isArray(obj)
_.isArray(obj)
如果您不需要检测在不同框架中创建的数组,也可以使用instanceof
instanceof
obj instanceof Array