判断数组类型

1.在ES5中区分js的数组和对象,是比较容易,直接用Arrar.isArray()

Array.isArray([])   //true
Array.isArray({}) //false

这个属性在ie8或ie8一下是支持es5的这一属性

PS: es5的支持情况如下:

IE6是15年前的,所以不支持,IE7出来时ECMAScript5没出来,所以不支持,IE8支持一点,IE9支持更多,IE10完美支持了,IE11支持少量ECMAScript6。
http://kangax.github.io/compat-table/es5/ (ECMAScript5 test)
http://kangax.github.io/compat-table/es6/ (ECMAScript6 test)

在ES5以前区分数组和和对象是比较困难,typeof在面对数组和对象是完全不起作用的。简单的区分就用到instanceof

[] istanceof Array  //true
({}) instanceof Array  //false

但是在浏览器有可能多个窗口或窗体(frame)存在,因此一个窗口的对象不是另外窗体的构造函数的实例。instanceof就不能作为一个可靠的检测数组的方法

解决方案是检测对象的类属性

var isArray = Function.isArray || function(o){
	return typeof o === "object" && Object.prototype.toString.call(o) === "[object Array]";
}

alert(Array.isArray([])) //true
alert(Array.isArray({})); //false
时间: 2024-11-04 23:59:19

判断数组类型的相关文章

JavaScript中如何判断数组类型

前言 JavaScript中关于数组的判定问题,一直都是一个必须要掌握的点,那么,运用知识,如何判断一个类型是数组,就需要有对JavaScript使用有着深入的了解. 判断方法 一.Array.isArray ES5新增的数组方法,Array.isArray应该是我们最先想到的判定方式,现在应用的也比较广泛. const arr = [1,2,3,4] Array.isArray(arr) // true 如果是在支持ES5的浏览器中,用这样的方式自然没什么问题,但是如果是在IE9以下版本,这个

JS怎么判断数组类型?

1.判断对象的constructor是否指向Array,接着判断特殊的属性length,splice等.[应用的是constructor的定义:返回对象所对应的构造函数.] eg: [].constructor == Array; //true 2.使用instanceof 判断对象是否是数组的实例,[应用的是instanceof的定义:某实例是否是某构造函数的实例],[极端情况下不行,比如iframe的嵌套页面之间的判断],[Array实质上是window.Array] eg: var arr

判断数据类型和数组类型

js数据类型判断和数组判断 这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number:什么整数啊浮点数啊都叫数字,你懂的~ Boolean: 就是true和false啦 undefined:未定义,就是你创建一个变量后却没给它赋值~ null: 故名思久,null就是没有,什么也不表示 obj

怎么判断一个对象是不是数组类型?

前面<变量的赋值和对象的赋值>中有用到typeof运算符去判断运算数的类型,结果如下: alert(typeof 1); // 返回字符串"number" alert(typeof "1"); // 返回字符串"string" alert(typeof true); // 返回字符串"boolean" alert(typeof {}); // 返回字符串"object" alert(typeof

typeof判断类型(数组类型得用instanceof)

var a= 1; console.log(typeof a); var b= '1'; console.log(typeof b); var c; console.log(typeof c); var d= true; console.log(typeof d); var e= [1,2,3]; console.log(typeof e); var f= function(){}; console.log(typeof f); console.log(e instanceof Array) 观

判断一个变量是数组类型的方法

在很多时候,我们都需要对一个变量进行数组类型的判断(借鉴) 学过js就应该知道typeof运算符返回字符串,该字符串代表操作数的类型(即返回数据类型)这是最常用的. 下面多种实现方式: JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function.String.Number.Undefined等,但是要是检测Array的对象就不起作用了. alert(typeof null); // "object" alert(ty

js数组类型判断与数据类型判断回顾

前两天参加了百度前端的电话面试,其中问到了数组类型的判断问题,虽然以前看过这方面的内容,但时间久了有点模糊,答得不怎么好,现在对相关内容做个回顾和总结. 先来回答这个问题:如何判断一个对象是数组? 判断一个对象是否是数组方法有多种: 一.Array.isArray()函数 在ECMAScript5中可以通过Array.isArray()来做这件事: Array.isArray({}); //false Array.isArray([]); //true 二.instanceof instance

判断对象类型

1.typeof不能区分数组类型和对象,只能区分原始类型与function 2.判断父级对象: isPrototypeOf -- 判断对象本身数据类型,及可能继承自原型的数据类型 let bool = Array.prototype.isPrototypeOf(obj) 3. 判断构造函数: 检查整个原型链 obj.constructor==Array 是数组,也可能继承自数组 let bool = obj instanceof Array 是数组,也可能继承自数组 4. 判断对象的内部clas

《JS权威指南学习总结--7.10 数组类型》

内容要点: 一.数组类型 判断它是否为数组通常非常有用.在ES5中,可以使用Array.isArray()函数来做这件事情: Array.isArray([]); //=>true Array.isArray({}); //=>false 二.类数组对象 JS数组的有一些特性是其他对象所没有的: 1.当有新的元素添加到列表中时,自动更新length属性. 2.设置length为一个较小值将截断数组. 3.从Array.prototype中继承一些有用的方法. 4.其类属性为"Arra