1

可能重复:
如何检测变量是否为数组

当我需要测试变量是否为数组时(例如,函数中的输入参数可能是对象或数组),我通常使用这段代码

typeof(myVar) === 'object' && myVar.length !== undefined;

这是正确的方法还是有更有效的方法,考虑到即使 myVar instanceof Array 更快,也应该避免由于iframe问题?

4

4 回答 4

6

Array.isArray现在可以在ECMAScript 5中使用,因此您可以将它与旧浏览器的polyfill一起使用:

if(!Array.isArray) {
  Array.isArray = function (vArg) {
    return Object.prototype.toString.call(vArg) === "[object Array]";
  };
}

Array.isArray(myVar);
于 2012-07-23T22:54:42.217 回答
0

“iframe 问题”可以简单地通过不为框架和数组使用相同的名称来避免。在我看来,这并不难。也就是说,我从来不需要断言某事是否是大批...

于 2012-07-23T22:50:49.937 回答
0

如果您已经在代码中使用 jQuery,则可以使用 jQuery.isArray()。这是文档:

http://api.jquery.com/jQuery.isArray/

于 2012-07-23T22:50:53.537 回答
0

你可以试试—— Object.prototype.toString.call
一个例子——

var a = [1,2]
console.log(Object.prototype.toString.call(a))

这将返回 [object Array]
可以通过以下方式使用字符串切片方法进行检查

console.log(Object.prototype.toString.call(a).slice(8,-1)) <br />

返回“数组”

var a = [1,2]
console.log(Object.prototype.toString.call(a).slice(8,-1) == "Array") // true
于 2012-07-23T22:59:42.367 回答