一尘不染

JavaScript 如何检查对象是否为数组?

javascript

我正在尝试编写一个接受字符串列表或单个字符串的函数。如果它是一个字符串,那么我想将其转换为仅包含一项的数组,因此我可以遍历它而不必担心错误。

那么,如何检查变量是否为数组?


我整理了以下各种解决方案,并创建了jsperf测试。它们都非常快,因此只需使用Array.isArray- 现在得到了很好的支持,并且可以跨框架使用。


阅读 306

收藏
2020-04-23

共1个答案

一尘不染

在现代浏览器中,您可以

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)

如果您不需要检测在不同框架中创建的数组,也可以使用instanceof

obj instanceof Array
2020-04-23