百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> js判断是否为数组的函数
分享文章到:

js判断是否为数组的函数

发布时间:01/15 来源: 浏览: 关键词:
下面来给大家介绍js判断是否为数组的函数,在js中没有像php那样有isarray函数了,我们需要通过自定函数实例。

我们常用的datearray.constructor==Array来判断

 代码如下

<script language="javascript">
var ret = false;
var datearray = Array();
if( datearray.constructor==Array )
{
 alert('是数组');
}
else
{
 alert("不是数组");
}
</script>


今天刚好在学习支付宝 JS 框架 base.js 。瞄了一下,实现是这样的:

 代码如下

if (value instanceof Array ||
 (!(value instanceof Object) &&
 (Object.prototype.toString.call((value)) == '[object Array]') ||
 typeof value.length == 'number' &&
 typeof value.splice != 'undefined' &&
 typeof value.propertyIsEnumerable != 'undefined' &&
 !value.propertyIsEnumerable('splice'))) {
 return 'array';
}

怎么说呢,乱。当然,也可以说是,“史上最全”,它确实使用了最主流的方法,只是把他们都写一起了而已。


像我们所知道的,用 instanceof 和 constructor 是最直接的、简单的方式:

 代码如下

var arr = [];
arr instanceof Array; // true
arr.constructor == Array; //true

只是,由于在不同 iframe 中创建的 Array 并不共享 prototype。如果这样用。麻烦就来了。那么,如果要应用在框架中,这种方式肯定是行不通的。倒是,使用 Douglas Crockford 的填鸭式方法是可以解决这个问题(《JavaScript 语言精粹》P61):

 代码如下

var is_array = function(value) {
 return value &&
        typeof value === 'object' &&
        typeof value.length === 'number' &&
        typeof value.splice === 'function' &&
        !(value.propertyIsEnumerable('length'));
};

不过,是否还有更简单的方法呢?其实,像我们自己用的,不就是了么?

Object.prototype.toString.call(value) == '[object Array]'上面这种写法,是 jQuery 正在使用的。目前,淘宝的 kissy 也是使用这种方式。难道这不是目前最简洁,而且最有效的方式么?个人感觉内部框架写得有点累赘了。例行总结,最终方案:

 代码如下

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

==============

UPDATE: 2010.12.31 00:01(出处)

判断类型,很酷。具体的,跟上面是一个道理:

 代码如下

var is = function (obj,type) {
        return (type === "Null" && obj === null) ||
        (type === "Undefined" && obj === void 0 ) ||
        (type === "Number" && isFinite(obj)) ||
         Object.prototype.toString.call(obj).slice(8,-1) === type;
}

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有4人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板