预测未来最好的方法就是去创造未来。——<亚伯拉罕·林肯>
介绍
在 JavaScript 中使用数组是一项常见活动。有时我们在 JavaScript 中得到一个变量,我们需要它是一个数组,但我们不确定它是不是。
JavaScript 中的非原始数据类型都是对象(函数有自己的类型,但它们也是对象)。因此,使用 typeof 通常用于确定数据类型的运算符是不够的:
1 | let result = { subject: 'Science', marks: 97 }; |
在本文中,我们将看看如何在 JavaScript 中检查给定的变量或值是否为数组。
使用 Array.isArray() 方法
顾名思义,此方法可用于识别给定参数是否为数组。它返回一个带有结果的布尔 (true/false) 值。
例如,对于以下变量,Array.isArray() 方法可以正确确定它们是否为 1:
1 | let result = { subject: "Science", marks: 97 }; // Object |
使用对象的构造函数属性
每个对象都有一个 constructor 属性(除了用 Object.create(null),不太可能发生的创建的对象)。我们可以直接将构造函数属性与 JavaScript 的构造函数进行比较。因此,如果我们将它与数组构造函数进行比较,我们就会知道它是否是一个数组。
注意:构造函数是初始化对象的函数。如果您使用 new 关键字创建了一个对象,那么您就是使用构造函数创建的。例如,在let myArray = new Array(1, 2)构造函数中使用的是 Array()。
您可以使用构造函数属性来确定变量是否为数组:
1 | let result = { subject: "Science", marks: 97 }; |
使用instanceof运算符
instanceof 操作检查是否一个构造函数中的对象的原型链中找到。如果您不太熟悉 JavaScript 的原型继承,则运算符会检查对象是否由类创建,如果不是,则检查对象是否从该类派生。
与 typeof 运算符一样,它返回一个布尔值。要确定变量是否是数组,我们可以这样使用 instanceof:
1 | let result = { subject: "Science", marks: 97 }; |
使用Object.prototype.call()方法
JavaScript 中的所有对象都从主原型对象继承属性,恰当地命名为 Object.prototype . 一个 toString() 方法存在 Object.prototype,这就是为什么每个对象都有一个toString()属于自己的方法。所述 toString() 的方法 Object.prototype 显示的对象的类型。
call()对象的方法执行一个函数,但改变了 this 传递给它的参数的对象的值,即它允许一个对象使用另一个对象的方法。
因此,我们可以使用 Object.prototype.toString() 打印类型,然后使用 call() 为另一个对象完成。然后我们比较该字符串值以确定它是否是一个数组:
1 | let result = { subject: "Science", marks: 97 }; |
总结
在本文中,我们研究了 JavaScript 中确定对象是否为数组的几种方法。最简单的方法是 Array.isArray()最有可能在生产中使用的方法。
但是,我们总是可以利用 instanceof 运算符和其他对象属性来确定它是否是一个数组。
参考
关注【公众号】,了解更多。

赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!
支付宝打赏
微信打赏