javascript检测数组

ECMAScript5中的数组已经引入了isArray方法,该方法的目的就是检测变量是否为数组。

但是对于ie6、7等古老的浏览器是没有这样的方法的,在Zakas写的一本书上摘到一个函数,基本能优雅的满足大部分需求:

函数如下:

 1 function isArray(arr) {
 2   if (typeof Array.isArray === "function") {
 3       return Array.isArray(arr);
 4   } else {
 5         return Object.prototype.toString.call(arr) === "[object Array]";
 6     }
 7 }
 8 /*
 9 *else里的代码解释
10 *call改变toString的this引用为待检测的对象,返回此对象的字符串表示,然
11 *后对比此字符串*是否是‘[object Array]‘,以判断其是否是Array的实例。这
12 *里不能直接调用Array的*toString的方法,因为它可能被修改,而Object
13 *是“最原始”对象,很少有人敢去碰它以及它**的属性,*所以能一定程度保证
14 *其“纯洁性”。
15 */

当然还有一种比较不靠谱的方法,但是一般情况下还是能奏效的:

1 function isArray(arr) {
2   return typeof arr.sort() === "function";
3 }
4 /*
5 *但是如果某个对象也含有sort方法,那么这个函数就寿终就寝了~~用这个
6 *方法是,你必须保证你代码里的所有js对象都不含有sort方法,这样才能
7 *保证这个方法正常执行。
8 */
时间: 2024-10-26 21:19:31

javascript检测数组的相关文章

JavaScript学习笔记:检测数组方法

很多时候我们需要对JavaScript中数据类型( Function . String . Number . Undefined . Boolean 和 Object )做判断.在JavaScript中提供了typeof操作符可以对这些常用的数据类型做判断.但要使用typeof来判断数据是不是一个数组,就不起作用了.那在实际生产中要如何来检测数据是不是一个数组呢? 今天的学习任务就是如何来检测一个数据是不是数组? typeof操作符 typeof 可以解决大部分数据类型的检测,如: 1 cons

私人定制javascript中数组小知识点(Only For Me)

先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好,便是晴天! 媳妇说:老公你太有诗意了. 老公:滚犊子,安不好我整死你! 数组的概念 javascript数组是值得有序集合,不过它实属一个javascript对象的特殊形式,这是一个很重点的定性. 创建数组 1.var a=new Array();//等同于[] 2.var a=new Array(

JavaScript总结—数组

Array类型 ECMAScript数组的每一项可以保存任何类型的数据. 创建数组的两种方式: (1)使用Array()构造函数 var colors = new Array(20); var colors = new Array("red","blue","green"); (2)数组字面量表示法 var colors = ["red","blue","green"]; 修改.新增 v

PHP检测数组中的每个值是否含有特殊字符

本文出至:新太潮流网络博客 /** * [TestArray 检测数组是一维还是二维] * @E-mial [email protected] * @TIME 2017-04-07 * @WEB http://blog.iinu.com.cn * @param [type] $array [数组] */ function TestArray($array){ if(is_array($array)){ foreach($array as $v){ if(is_array($v)){ $Int_A

浅谈JavaScript中数组操作常用方法

JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2)获取对象的类型,比较是否为object类型(此方法只能检测是否为Object,不推荐) if(typeof(value)=="Object") { //对数组执行某些操作 } 3)检测对象是否为数组,使用Array.isArray()方法(只支持ie9+,firefox 4+,safar

Javascript中数组的判断方法

摘要: 1.数组检测的方法: 1) typeof . 2) instanceof . 3) constructor . 4) Object.prototype.toString. 5) Array.isArray(). 以上为数组检测的方法,但是这些方法中: Array.isArray()方法是最为简单方便的方法,但是存在版本支持性问题,没有版本支持性问题且较好的检测方法是使用Object.prototype.toString结合call()方法来检查,通常数组检测中我们常用的做法是两种方法结合

javascript: 数组详细操作方法及解析合集(9个改变8个不变12个遍历)

改变原数组的方法(9个): 1 2 3 4 5 let a = [1,2,3]; ES5: a.pop()/ a.shift()/ a.push()/ a.unshift()/ a.reverse()/ a.splice()/ a.sort() ES6: a.copyWithin() / a.fill 对于这些能够改变原数组的方法,要注意避免在循环遍历中改变原数组的选项,比如: 改变数组的长度,导致遍历的长度出现问题. pop() 删除一个数组中的最后的一个元素 定义: pop() 方法删除一个

javascript中数组的方法你真的都了解吗?

本篇文章主要讲述ES5中的数组,包括数组两种创建方式,属性,以及 9 大类 ,总共23个操作方法,非常全面,看完之后ES5数组这一部分基本都了解了,下一篇文章,我会讲述ES6中对数组的加成,新增了哪些方法,以及定型数组,类数组和类数组的所有方法,记得关注哦! 数组作为javascript中最常用的数据类型之一,掌握好数组的方法在日常的开发中是非常有必要的,javascript中的数组相比其他语言来说更灵活,因为数组的每一项都可以是不同的数据类型,可以是对象,数组,字符串,数值等等,接下来一点一点

建议9:正确检测数组类型

由于数组和对象的数据同源性,导致在JavaScript编程中经常会出现:在必须数组时用了对象,在必须用对象时用了数组. typeof检测数组的类型时object,没有意义,所以这里可以通过自定义一个is_array函数来你部缺陷 var is_array = function(value){ return value && typeof(value) === 'object' && value.constructor === Array; } 但是,上面函数在识别从不同的窗