测试变量是否为数组的最佳方法

时间:2012-07-23 22:48:13

标签: javascript

  

可能重复:
  How to detect if a variable is an array

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

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

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

4 个答案:

答案 0 :(得分:6)

Array.isArray现在可以与ECMAScript 5一起使用,因此您可以将polyfill用于older browsers

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

Array.isArray(myVar);

答案 1 :(得分:0)

“iframe问题”可以简单地通过不对帧和数组使用相同的名称来避免。在我看来不难做到。那就是说,我从来没有必要断言是否东西是一个阵列...

答案 2 :(得分:0)

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

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

答案 3 :(得分: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 />

返回“Array”

var a = [1,2]
console.log(Object.prototype.toString.call(a).slice(8,-1) == "Array") // true