如何检查JavaScript中的变量是否为数组

99 阅读2分钟

要检查JavaScript中任何值的数据类型,可以使用typeof操作符。有一些用例,比如说,我们从服务器上获取json数据,然后把它转换成一个对象,然后如果我们想确定这个数据对象是否包含数组值,可以使用isArray()函数。

在JavaScript中检查变量是否是数组

要检查一个变量是否是JavaScript中的数组,可以使用array.isArray() 方法。array isArray()是一个内置的函数,它可以检查传递的值是否是一个数组。

如果该值是一个数组,则 返回 true ;否则,返回false。当检查数组实例时,isArray() 函数比instanceof更受欢迎,因为它可以通过iframes工作。

语法

Array.isArray(value)

参数

要检查的值。

例子

请看下面的例子:

// app.js

let arr = ['Millie', 'Bobby', 'Brown'];
console.log(Array.isArray(arr))

let data = {
  realname: 'Millie Bobby Brown',
  character: 'Eleven',
  series: 'Stranger Things'
};
console.log(Array.isArray(data));

在上面的例子中,我们定义了一个字符串数组和一个对象数组。

请看下面的输出:

➜  es git:(master) ✗ node app
true
false
➜  es git:(master) ✗

不同类型的Javascript isArray行为

类型值为JSONARRAY.ISARRAY
空数组[]
一个Number字面的数组[1,2,3]
一个字符串数组的字面意义["a" "b", "c"]true
数组(使用构造函数.from)[null,null,null,null,null,null,null,null,null]。true
使用构造函数的空值数组[null,null,null,null,null,null,null,null,null,null,null]。true
使用构造函数的有值数组[1,2,3]true
数组原型[]
来自另一个窗口的数组[1,2,3]
空对象{}false
具有.length 属性的对象{"长度":10}假的
对象的__prototype__ 是数组{}false
对象{"a":"2", "b":"c"}假的
带有嵌套数组的对象{"嵌套":["2", "c"]}假的
空集{}假的
字符串的集合{}false
数字集{}false
空地图{}假的
具有不同类型的地图{}false
字符串字面"hello world."false
字符串对象"hello world"false
Boolean true literaltruefalse
布尔型错误字面假的假的
明确的未定义未定义false
隐式未定义未定义的假的
null虚假
数字(整数)123假的
数字(浮点数)1.23错误

一个数组可以通过使用array.length属性来检查它是否为空。这个属性返回数组中的几个元素。

如果这个数字大于0,它的值为真。

这个方法和属性可以和AND(&&)运算符一起使用,以确定数组是否存在并且不是空的。

数组isArray() Polyfill

如果你的浏览器中没有Array.isArray(),在任何其他代码之前运行下面的代码将创建Array.isArray():

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

本教程到此结束。