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

best way to test if a variable is an array

本文关键字:最佳 方法 数组 变量 是否 测试      更新时间:2024-01-10

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

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

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

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

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

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

"iframe问题"可以简单地通过不对帧和数组使用相同的名称来避免。在我看来,这并不难。也就是说,我从未需要断言某个东西是否是数组…

如果您已经在代码中使用jQuery,您可以使用jQuery.isArray()

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

您可以尝试-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