js判断是否数组的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js判断是否数组的方法相关的知识,希望对你有一定的参考价值。

参考技术A 在说明如何判断一个对象为数组类型前,我们先巩固下js的数据类型,js一共有六大数据类型:number、string、object、Boolean、null、undefined。

除了前四个类型外,null、对象、数组返回的都是object类型;对于函数类型返回的则是function,再比如typeof(Date),typeof(eval)等。接下来进入正题,js判断数组类型的方法。

instanceof 用于判断一个变量是否某个对象的实例,左边操作数是一个对象,右边操作数是一个函数对象或者函数构造器。原理是通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。
a instanceof b?alert("true"):alert("false") //注意b值是你想要判断的那种数据类型,不是一个字符串,比如Array。
举一个例子:
var arr=[];
console.log(arr instanceof Array) //返回true

在W3C定义中的定义:constructor 属性返回对创建此对象的数组函数的引用,就是返回对象相对应的构造函数。从定义上来说跟instanceof不太一致,但效果都是一样的。
那么判断各种类型的方法:

注意:
使用instaceof和construcor,被判断的array必须是在当前页面声明的!比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个array,并将其赋值给父页面的一个变量,这时判断该变量,Array ==object.constructor;会返回false;

原因:
1、array属于引用型数据,在传递过程中,仅仅是引用地址的传递。
2、每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的array,所对应的构造函数,是子页面的Array对象;父页面来进行判断,使用的Array并不等于子页面的Array。

isPrototypeOf() 函数 : 用于指示对象是否存在于一个对象的原型链中。如果存在返回true,反之返回false。该方法属Object对象,由于所有的对象都继承了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。如果variable的原型链中存在Array对象,就会返回true,也就说明variable是数组类型。

js判断数组是不是为空

① 利用数组的length属性来判断,length=0->这个数组就是空数组;

② 或者利用数组的各种方法和字符串方法,比如toString();

如果转成字符串是空字符串,则这个数组就是空数组;

③当然还有其他方法,比如直接打印出这个数组,看看结果是不是空的;


参考技术A 最常用的方法是判断数组的长度length是否为0。
数组长度为0,说明数组里面不包含任何值或嵌套数组、对象等,即为空。
也可以通过循环或查找等方法判断。

以上是关于js判断是否数组的方法的主要内容,如果未能解决你的问题,请参考以下文章

js怎么判断某个数组里面是不是包含这个元素

判断一个变量是不是为数组

JS 判断某变量是不是为某数组中的一个值 的几种方法

js判断一个对象是否为数组

js 判断数组中是不是包含

JS判断一个数组中是不是有重复值的三种方法