區分 javascript 中的 array 和 object 有四種方法:array.isarray() 方法直接檢查變量是否為數組。instanceof 運算符檢查變量是否為 array 實例。object.prototype.tostring.call() 方法返回數組的類型描述符。數組具有 length 屬性,而對象沒有。
如何用 JavaScript 區分 Array 和 Object
簡介
在 JavaScript 中,Array 和 Object 是兩種數據結構,用于存儲和整理數據。盡管它們具有相似之處,但它們本質上還是不同的數據類型,在某些情況下需要加以區分。
區分方法
1. Array.isArray() 方法:
用于直接檢查變量是否是 Array,返回布爾值。
2. instanceof 運算符:
檢查變量是否為 Array(或任何其他類)的實例。
3. Object.prototype.toString.call() 方法:
返回對象的類型描述符,對于數組會返回 “[object Array]”。
4. 檢查對象是否具有 length 屬性:
數組具有 length 屬性,而對象沒有。
詳細說明
Array.isArray() 方法:
let arr = [1, 2, 3]; console.log(Array.isArray(arr)); // true
登錄后復制
instanceof 運算符:
let arr = [1, 2, 3]; console.log(arr instanceof Array); // true
登錄后復制
Object.prototype.toString.call() 方法:
let arr = [1, 2, 3]; console.log(Object.prototype.toString.call(arr)); // "[object Array]"
登錄后復制
檢查 length 屬性:
let arr = [1, 2, 3]; console.log(arr.hasOwnProperty("length")); // true let obj = { name: "John" }; console.log(obj.hasOwnProperty("length")); // false
登錄后復制
要注意的特殊情況
繼承自 Array 的自定義對象或類也可以通過 Array.isArray() 和 instanceof 檢查。
類似地,某些庫或框架可能會提供類似于 Array 的對象,因此使用 Object.prototype.toString.call() 方法可能更可靠。