Javascript-判斷是否為陣列的5種方法

愛做飯的阿鑫發表於2020-12-19

var arr= [1,1,1,1]
var a = '2323'
var b =  {name:'xiao',age:12}
var n = 1

1 instanceof

1 instanceof運算子用於檢驗建構函式的prototype屬性是否出現在物件的原型鏈中的任何位置,返回一個布林值。
注意的是,prototype屬性是可以修改的,所以並不是最初判斷為true就一定永遠為真。

console.log('方法1',arr instanceof Array); //如果是陣列 列印結果為 true

2 constructor

例項的建構函式屬性constructor指向建構函式,那麼通過constructor屬性也可以判斷是否為一個陣列。
這種判斷也會存在多個全域性環境的問題,導致的問題與instanceof相同。

console.log('方法2',arr.constructor === Array);//true

3 Array.isArray() 最推薦方法

同樣能準確判斷,但有個問題,Array.isArray() 是在ES5中提出,也就是說在ES5之前可能會存在不支援此方法的情況。

console.log('方法3',Array.isArray(arr)); //true

4 typeof

使用該方法 判斷陣列時 列印結果為object

console.log('方法4',typeof n); //number
console.log('方法4',typeof(b)) //object

5 Object.prototype.toSrtring.call()

當使用該方法判斷其他資料型別時要注意一點是,IE8及IE8以下,undefined和null均為Object,IE9及IE9以上為[object Undefined]和[object Null]

console.log(Object.prototype.toString.call(arr).indexOf('Array') !== -1); //true
console.log(Object.prototype.toString.call(arr) === '[object Array]');    //true

總結

個人學習過程中的方法總結,歡迎大家留言或者私信給出建議,我會及時更正,謝謝大家。

相關文章