我们通常使用的typeof 方法是无法辨别该变量是对象还是数组类型,因为:

let obj = {}
let arr = []
console.log(typeof obj) //object
console.log(typeof arr) //object

解决方案:
一、使用数组内置方法isArray来判断,但是只能判断变量是否是数组,而对象需要另外判断

const a = [1, 2, 3, 4];
const b = {"name": "abc"};
console.log(Array.isArray(a)) //true  
console.log(Array.isArray(b)) //false

二、使用constructor来判断

const a = [2, 4, 3];
const b = {"name": "abc"};
console.log(a.constructor == Array); //true
console.log(b.constructor == Object); //true`

三、使用instanceOf运算符
左侧是待测试对象,右侧是构造函数。
凡是用new()构造函数创建出的对象,都为构造函数的实例。

const obj = {"name": "abc"};  
const arr = [1, 2, 3];  
console.log((obj instanceof Array)); //false  
console.log((arr instanceof Array)); //true
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐