判断一个对象是不是JavaScript数组(怎样判断一个变量是数组)

(1)方法一:
在编写程序时,我们经常需要 获得一个变量的数据类型 ,大多数时候, typeof 运算符就能够告诉我们答案。
var num = 1; // typeof(num) == 'number'
var str = 'hello'; // typeof(str) == 'string'
var boo = true; // typeof(boo) == 'boolean'
var obj = {};// typeof(obj) == 'object'

但是 如果变量是一个数组呢?
Object.prototype.toString.call()

var arr = []; // typeof(arr) == 'object'
我们都知道, 在 JavaScript 里面,数组也是一种对象,对象也是一种数据类型。 所以,在我们试图使用 typeof 运算符获得 arr 这个变量的类型时,只能得到 ‘object’ 这个结果。

那么,怎样判断这个对象是不是数组呢?
var arr = [];
isArray(arr); // true
function isArray(arg){
  return Object.prototype.toString.call(arg) === '[object Array]';
}

这里我们调用了 Object 对象原型的 toString 方法,如果对象是数组,则该函数返回’[object Array]‘。 这种方法也可以用来获得任何其他变量的类型,不管变量的实际类型是什么,返回值都是以 object 开头,因为 Number,String,Boolean,Array,Function 都继承自 JavaScript 内置的 Object 对象 ,而每一个变量,都是与其类型相应的对象的一个实例。这种方法的使用示例如下:
12345678910111213/* Object.prototype.toString.call(arg); // arg 可以是任何变量,不管变量的实际类型是什么,返回值都是以 object 开头。 */
var num = 1;
alert(Object.prototype.toString.call(num)); // [object Number]
var str = 'hudidit.com';
alert(Object.prototype.toString.call(str)); // [object String]
var boo = true;
alert(Object.prototype.toString.call(boo)); // [object Boolean]
var fun = function(){};
alert(Object.prototype.toString.call(fun)); // [object Function]
var obj = {};
alert(Object.prototype.toString.call(obj)); // [object Object]
var arr = [];
alert(Object.prototype.toString.call(arr)); // [object Array]
instanceof
12var arr = [];
alert(arr instanceof Array); // true


(2)方法二
instanceof 运算符用于判断一个变量是否为一个对象的实例。在这里,arr 是 Array 对象的一个实例,所以 arr instanceof Array 会返回 true ,从而我们知道变量 arr 是一个数组。


(3)方法三
jQuery.isArray()
别忘了 jQuery !
如果你恰好在项目中使用 jQuery ,那么直接使用 jQuery 内置的用于判断对象是否为数组的函数 jQuery.isArray() 就可以了,简洁而有力!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值