在这篇文章中,你将了解到检查一个对象是否为数组的若干方法。
在javascript中,没有类型检查,声明的变量持有任何类型的数据,包括阵列或任何类型。我们需要根据存储的数据来了解对象的类型。
在javascript中,有很多方法来检查对象的类型是否是数组。
- 对象构造函数
- 数组isArray的本地方法
- Jquery isArray方法
- lodashJs & underscorejs库的isArray方法
- Angular isArray方法
检查对象是否属于数组类型
让我们声明以下两个对象,一个是数组,另一个是字符串。
let objArray=[1,5,61]
let obj="stringvalue";
根据你的项目库的使用情况,你可以从以下方法中选择一个方法。
对象构造器
对象构造器的名称返回对象的类型,如对象,数字,字符串,数组。下面检查构造器的名称是否为数组
function isArray(obj){
if (obj.constructor.name == "Array") {
return true;
}
return false;
}
console.log(isArray(objArray))
console.log(isArray(obj))
数组isArray方法
数组内置方法isArray检查对象,这是javascript语言中本地方法的一部分,不需要安装库。如果是数组,返回true;如果不是数组,返回false。
console.log(Array.isArray(objArray)) //true
console.log(Array.isArray(obj)) //false
isArray本地方法不支持旧的浏览器
isArray的使用支持
你可以检查浏览器对[isArray caniuse]的支持(https://caniuse.com/#search=isArray)
如果不支持旧的浏览器,你必须写一个polyfill,增加对旧浏览器的支持。
Array.prototype.isArray = function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
};
Jquery isArray方法
如果应用程序是基于传统的jquery,isArray方法被使用。
语法和例子
jQuery.isArray(object) // syntax
jQuery.isArray(objArray) //true
jQuery.isArray(obj) //false
underscorejs, lodash isArray方法
如果你的项目使用underscorejs库,isArray方法会返回true - 用于数组,false - 用于其他类型的脚本。
console.log(_.isArray(objArray)) //true
console.log(_.isArray(obj)) //false
同样的代码可以在lodashJs 项目中使用
AngularJS对象的数组类型检查
在AngularJS 项目中,Angular全局对象提供了isArray方法来检查一个对象是否包含数组类型。
var values = [{ id: '1', name: 'Franc' }, { id: '2', name: 'John' } ];
angular.isArray(values) // true