簡體   English   中英

如何區分對象和數組

[英]how to differentiate between object and array

let a = {}
let b = []

typeof a // returns an object
typeof b // returns an object

 a === {} // false
 b === [] // false
 a === b // false

那么我怎么知道它是數組還是對象,我正在嘗試驗證用戶輸入,它可以是數組或對象,但在任何一種情況下我都不希望該值為空

這實際上是幾個問題合二為一。 首先,對於許多人來說typeof []'object'是違反直覺的。 這僅僅是因為 Array 是一種引用類型( nullDate實例和任何其他 object 引用的typeof也為object )。

幸運的是,要知道 object 是否是Array的實例,您現在可以使用方便的Array.isArray(...) function。 或者,您可以將其用於任何類型的 object,您可以執行類似b instanceof Array的操作。

可以通過檢查Object.keys(a).length === 0來了解其中一個是否為,盡管對於 Arrays 來說更自然的是做b.length === 0

使用===檢查任何兩個對象變量(包括數組)只會告訴您這兩個變量是否引用 memory 中的相同 object,而不是它們的內容是否相等。

由於 Arrays 和 Objects 共享相同的類型,您可以檢查例如:

if (b instanceof Array) {

}
if (Array.isArray(a) && a.length === 0) {
  // a is an array and an empty one
}

實際上,對對象和數組使用typeof將返回Object JS 中有一些方法可以檢查變量是否為數組。

  1. Array.isArray(變量名)
  2. 變量名 instanceof 數組
  3. variableName.constructor === 數組

如果變量是數組,所有這些方法都將返回true ,否則將返回false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM