要检查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行为
| 类型 | 值为JSON | ARRAY.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 literal | true | false |
| 布尔型错误字面 | 假的 | 假的 |
| 明确的未定义 | 未定义 | 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]';
};
}
本教程到此结束。