如何判斷數組?有的小夥伴應該知道,但是有的卻說不上來js如何判斷陣列。下面小編就針對這個問題給大家收集整理了份資料,有興趣的朋友一起看看吧,希望大家能掌握JS判斷數組的知識。
typeof運算子
typeof會傳回這個類型的字串
var a = '123' console.log(typeof(a)) //string var b = [] console.log(typeof(b)) //object var c = {} console.log(typeof(c)) //object var d = null console.log(typeof(d)) //object
上述看到陣列物件null 用typeof傳回都是object 這種方法不能辨識出是否為數組
原型contructor鏈方法
實例化有一個contructor屬性這個屬性指向生成對象數組的方法
var a = [] console.log(a.__proto__.constructor) //ƒ Array() { [native code] } var b = {} console.log(b.__proto__.constructor) //ƒ Object() { [native code] }
上述看到數組是由Array函數實例化的對象由Object函數實例化來得
感覺這種方法是可以了但是constructor這個屬性是可以被改寫的
var a = [] a.__proto__.constructor = Object console.log(a.__proto__.constructor) //ƒ Object() { [native code] }
可以看到這個是變成了數組判斷成了對象所以這個方法也不是最好的
instanceof
這個方法是判斷某個建構函式的prototype屬性所指向的物件是否在另一個要偵測物件的原型鏈上
var a = [] console.log(a instanceof Array) //a对象的原型链上能找到Array true console.log(a instanceof Object) //true 原型链上也能找到对象
上述這種也不是特別好判斷不出是數組還是物件
通用的方法toString
toString() 方法傳回放映這個物件的字串
var a= '123' console.log(a.toString()) //123 var b = [1,2,3] console.log(b.toSting()) //1,2,3 var c = {} console.log(c.toString)) //[object Object]
可以看到只有物件回傳物件型別
傳回[object type] type代表物件的型別
判斷物件用Object的toString的方法拿過來用
var a =[] Object.prototype.toString.call(a) //[object Array]
這個物件toString方法是可以判斷出是否為數組
但是這裡注意下有個情況就是物件原型上toString() 也是可以更改的
Array.isArray(XX)
個人感覺還是使用通用方法toString() 方法可靠度
相關推薦:
JavaScript中如何用in_array函數判斷數組用法詳解
以上是JS判斷數組詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!