[英]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 是一種引用類型( null
、 Date
實例和任何其他 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 中有一些方法可以檢查變量是否為數組。
如果變量是數組,所有這些方法都將返回true ,否則將返回false 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.