首頁  >  文章  >  web前端  >  JS判斷數組詳細介紹

JS判斷數組詳細介紹

小云云
小云云原創
2018-01-25 13:14:071923瀏覽

如何判斷數組?有的小夥伴應該知道,但是有的卻說不上來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() 方法可靠度

相關推薦:

js判斷數組是否包含某個字串變數

JavaScript中如何用in_array函數判斷數組用法詳解

PHP判斷陣列是否為空的常用方法(五種方法)

以上是JS判斷數組詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn