1

数组和对象是唯一的输入。有没有一个简单的函数可以判断一个变量是数组还是对象?

4

4 回答 4

3

我怀疑还有许多其他类似的答案,但这是一种方法:

if ({}.toString.call(obj) == '[object Object]') {
  // is an object
}

if ({}.toString.call(obj) == '[object Array]') {
  // is an array
}

这可以变成一个漂亮的功能:

function typeOf(obj) {
  return {}.toString.call(obj).match(/\w+/g)[1].toLowerCase();
}

if (typeOf(obj) == 'array') ...

这适用于任何类型:

if (typeOf(obj) == 'date') // is a date
if (typeOf(obj) == 'number') // is a number
...
于 2013-04-16T04:17:33.743 回答
1

(variable instanceof Array)将为数组返回 true。

您也可以使用variable.isArray(),但旧版浏览器不支持此功能。

于 2013-04-16T04:21:31.603 回答
1

您可以使用Array.isArray()

if(Array.isArray(myVar)) {
    // myVar is an array
} else {
    // myVar is not an array
}

只要你知道这将是一个或另一个你已经设置好了。否则,将其与typeof

if(typeof myVar === "object") {
    if(Array.isArray(myVar)) {
        // myVar is an array
    } else {
        // myVar is a non-array object
    }
}
于 2013-04-16T04:21:47.053 回答
1

首先检查它是否是一个instanceof Array,然后检查它是否是对象类型。

if(variable instanceof Array)
{
//this is an array. This needs to the first line to be checked 
//as an array instanceof Object is also true

}
else if(variable instanceof Object)
{
//it is an object
}
于 2013-04-16T04:21:58.510 回答