数组和对象是唯一的输入。是否有一个简单的函数可以确定变量是数组还是对象?
答案 0 :(得分: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
...
答案 1 :(得分:1)
(variable instanceof Array)
将返回true。
您也可以使用variable.isArray()
,但旧浏览器不支持此功能。
答案 2 :(得分: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
}
}
答案 3 :(得分:1)
首先检查它是否为 instanceof数组,然后检查它是否为对象类型。
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
}