有什麼方法可以判斷是否是陣列

2021-08-28 05:20:25 字數 1993 閱讀 8891

typeof 返回資料型別

表示式返回值

typeof undefined

'undefined'

typeof null

'object'

typeof true

'boolean'

typeof 123

'number'

typeof "abc"

'string'

typeof function() {}

'function'

typeof {}

'object'

typeof

'object'

typeof unknownvariable

'undefined'

varo = ;

vara = ['reg','blue'];

我們用typeof 列印出來的都是object。這說明物件和陣列都是屬於object根本沒辦法區分。

varo = ;

vara = ['reg','blue'];

alert( ainstanceofarray );// true

alert( oinstanceofarray );// false

varo = ;

vara = ['reg','blue'];

alert( a.constructor===array );// true

alert( o.constructor===array );// false

大部分瀏覽器內建array內部實現了isarray判斷陣列的方法 

少數低版本瀏覽器沒有,比如ie8及以下版本

var arr = [1,2,3];

console.log(array.isarray(arr));//true

(這個方法會獲取物件內部的屬性[[class]],然後返回你乙個字串 

利用頂級原型的屬性,再利用call,可以達到我們檢測陣列的目的)

var arr = [1,2,3];

console.log(object.prototype.tostring.call(arr) === '[object array]');//true

所以要是不考慮相容問題的話,array.isarray可以檢測陣列沒問題 

object.prototype.tostring是最無懈可擊的方法 

instanceof和constructor的缺點 就是在多視窗和多框架的web頁面中相容不好 

我們來封裝乙個完美的函式用來檢驗是否是陣列。呼叫myisarray(陣列名)

function myisarray(value)else

}

判斷陣列的方法

JS有哪些判斷是否是陣列的方法?

參考 js判斷是否是陣列的四種做法 1 instanceoflet a a instanceof array trueinstanceof運算子檢測array.prototype屬性是否存在於變數a的原型鏈上.存在問題 prototype屬性是可以修改的,所以並不是最初判斷為true就一定永遠為真 ...

如何判斷是否是陣列

typeof 只能返回object eg a 1,2,3 js提供的方法 a array.isarray a 從建構函式入手 b a instanceof array 從原型入手 c array.prototype.isprototypeof a 根據物件的class 屬性 類屬性 跨原型鏈呼叫to...

判斷是否是陣列的幾種方法

判斷objectname是否是陣列 基本資料型別也可以使用此方法。123 constructor number true1 2判斷有誤差。a 在不同 iframe 中建立的 array 並不共享 prototype b 即使為true,也有可能不是陣列。function subarray subar...