javascript - js 判断是否数组
高洛峰
高洛峰 2017-04-10 15:47:58
[JavaScript讨论组]
function isArray(arr){
    return Object.prototype.toString.call(arr) == '[object Array]'
}

为什么这么判断呢

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
大家讲道理

唯一只有 Object 的 toString 方法,可以访问所有内置对象的 [[Class]] 属性的值 , 但是 toString 方法已经被很多对象类型覆盖了,所以你不能用 arr.toString 去判断,只能用

// 这种判断是最安全的
Object.prototype.toString(arr) 

楼上说的 arr instanceof Array 去判断是不安全的,在一个页面有多个 iframe 的情况下,因为 Array 是 window 对象的,不同 window 对象的 Array,是不相等的。

巴扎黑

这个话题要扯就扯得太深远了,可以去知乎啊,百度啊啥的查查……一般情况下用这个就行了

bool isArray = Array.isArray(obj)
迷茫

JS中不存在真正的数组,它不像C语言中那样具有内存的连续性、不可变长等特性。
JS中的数组你可以理解为一个map,key就是数字,所以你可以自己实现一个对象伪装成数组:

var a = {};
a[0] = 0;
a[1] = 1;
a.length = 2;

// 甚至你也可以添加一些方法...
a.push = function(item) {
  a[++a.length] = item;
};

So,你大概明白为什么那么判断是否是数组了么?

PHP中文网

也可以

arr instanceof Array

来判断

PHP中文网

Object.prototype.toString.call(null,arr) === '[Object Array]'

阿神

引入lodash,然后使用_.isArray(value)进行判断

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号