如何判断一个变量是否数组?

152 阅读1分钟

首先, typeof 是无法判断一个变量是否为数组类型的,我们来看一下例子:

let arr = [1, 2, 3]
console.log(typeof arr)

//  object     最后输出的是object对象

故而,如何判断一个变量是否数组呢,经过查阅资料,我整理了如下几种方法:

方法一

使用 instanceof 运算符,该运算符左边是我们想要判断的变量,右边则是我们想要判断的对象的类

console.log(arr instanceof Array) // true 返回true,说明变量arr是数组类型

方法二

利用构造函数来判断他的原型是否为Array,用法:变量.constructor === 变量类型

console.log(arr.constructor === Array)

方法三

利用的一个专门的方法isArray(), 用法:Array.isArray(变量),返回true,则说明该变量是数组类型;反之,说明该变量不是数组类型

console.log(Array.isArray(arr))

方法四

调用Object.prototype.toString.call()

console.log(Object.prototype.toString.call(arr) === '[object Array]')

方法五

通过对象的原型方式来判断

console.log(arr.__proto__ === Array.prototype)

方法六

通过 Object.getPrototypeOf()来判断是否为数组类型

console.log(Object.getPrototypeOf(arr) === Array.prototype)

方法七

通过 isPrototypeOf() 方法来判断是否为数组类型

console.log(Array.prototype.isPrototypeOf(arr))

参考转载原文:(blog.csdn.net/l_ppp/artic…)