如何判断javascript中的变量是否为数组?

如题,如何判断javascript中的变量是否为数组?在网上找了很多方法,感觉都不是很适合。谁有个比较有效的方式判断变量是否为数组。... 如题,如何判断javascript中的变量是否为数组?在网上找了很多方法,感觉都不是很适合。谁有个比较有效的方式判断变量是否为数组。 展开
 我来答
woshidaniel
推荐于2018-04-24 · TA获得超过9241个赞
知道小有建树答主
回答量:1760
采纳率:96%
帮助的人:972万
展开全部

通过下面方法进行检测,如果是数组,则返回true,如果不是数组,则返回false

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

测试:

var a1 = [1,2,3];
var a2=new Array("a","b");
var a3={a:1};
alert(isArray(a1));//true
alert(isArray(a2));//true
alert(isArray(a3));//false


补充:

根据ECMA-262规范定义

1、Object.prototype.toString( ) When the toString method is called, the following steps are taken:

Get the [[Class]] property of this object.

Compute a string value by concatenating the three strings “[object “, Result (1), and “]”.

Return Result (2)

2、new Array([ item0[, item1 [,…]]])

The [[Class]] property of the newly constructed object is set to “Array”.

因此检测对象是否是[object Array]就能判断是否是数组,call改变toString的this引用为待检测的对象,返回此对象的字符串表示,然后对比此字符串是否是'[object Array]',以判断其是否是Array的实例。

敏wawa
2011-08-21 · TA获得超过199个赞
知道小有建树答主
回答量:77
采纳率:0%
帮助的人:100万
展开全部
数组为引用类型,用 typeof 操作符检测引用类型的作用不大。ECMAScript提供了instanceof 操作符用于检测引用类型。如:
<script>
var arr = [ ];
alert (arr instanceof Array )//如果变量是给定引用类型,那么instanceof 操作符返回true,这里返回true
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0498059
2015-10-27 · TA获得超过259个赞
知道小有建树答主
回答量:286
采纳率:75%
帮助的人:194万
展开全部
a instanceof Array //判断a是数组吗

a是数组的话返回true,否则返回false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mozily
2011-08-21 · TA获得超过1789个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:406万
展开全部
Array.prototype.isPrototypeOf([1,2,3])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
y113700676
2011-08-21 · TA获得超过236个赞
知道小有建树答主
回答量:1032
采纳率:0%
帮助的人:310万
展开全部
var array = [];
alert(Object.prototype.toString.call(array) == '[object Array]')
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式