js如何判断是不是数组

JavaScript023

js如何判断是不是数组,第1张

// 这里提供两种js方法。返回true则是数组。var array = new Array("1", "2", "3", "4", "5")alert(array instanceof Array)alert(array.constructor == Array)// 较为严谨并且通用的方法:function isArray(object){return object &&typeof object==='object' && Array == object.constructor}

可以使用数组的indexOf()方法,如果返回值为-1则说明不存在,如果返回值为大于-1的整数,则说明存在。例如:

var arr = [1,2,3]

arr.indexOf(1) // 返回0

arr.indexOf(5) // 返回-1

附:返回值为数组中的最靠前元素在数组的位置

因为无论是数组还是对象,对于typeof的操作返回值都为object,所以就有了区分数组类型和对象类型的需要:

方一:通过length属性:一般情况下对象没有length属性值,其值为undefiend,而数组的length值为number类型

缺点:非常不实用,当对象的属性存在length,且其值为number(比如类数组),则该方法失效,不建议使用,看看即可。

*方二:通过instanceof来判断区分

var arr = [1, 2, 3] var obj = {name: 'lyl',age: 18,1: 'name'}console.log(arr instanceof Array)//trueconsole.log(obj instanceof Array)//false

*方三:通过constructor

var arr = [1, 2, 3] var obj = {name: 'lyl',age: 18,1: 'name'}console.log(arr.constructor === Array)//trueconsole.log(obj.constructor === Array)//false